通常在linux下使用ssh的时候我们需要目标机器开启了sshd的服务然后用 ssh客户端连接过去以指定的用户去登陆上去,正常情况下我们需要输入登陆密码才可以 成功登陆,但是在使用集群或者类似场景下我们有很多的的机器需要通过ssh间相互随机的访问,如果一个一个的输入密码那太繁琐了。由此我们就需要建立免密钥的登陆方式。
单向信任配置
A服务器:192.168.0.101
B服务器:192.168.0.102
要求B服务器能免密码访问A服务器
B服务器上的操作:
[[email protected] .ssh]# ssh-keygen -t rsa #rsa算法的证书
Generating public/private rsa key pair. (以下一路回车)
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y (因为我的证书已存在,覆盖即可)
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa. (私钥)
Your public key has been saved in /root/.ssh/id_rsa.pub. (公钥)
The key fingerprint is:
c1:26:cc:88:2b:05:dd:c3:6b:1e:78:5d:da:9c:da:8a
证书就生成了 id_rsa (私钥)|& id_rsa.pub (公钥)
scp id_rsa.pub 192.168.0.101:/root/.ssh/ #把公钥拷贝到A服务器
A服务器上操作
cd ~/.ssh/
mv id_rsa.pub authorized_keys
chmod 600 authorized_keys
测试
在B服务器192.168.0.102
ssh 192.168.0.101 date
多节点互信配置
每个节点服务器在.ssh目录下运行ssh-keygen -t rsa,然后把所有节点的id_rsa.pub中的公钥拷贝一份放入authorized_keys文件中。
最后把authorized_keys文件每个节点的.ssh目录下都放一份,并把权限改成600.
这个多个节点之间就能免密码互相访问了!