环境说明:
打在ubuntu系统的两台计算机master和slave1
两台计算机均已安装ssh服务
两台机器上都存在用户xuyizhen
下面开始配置:
在master节点上执行以下命令:
这条命令是生成密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/home/xuyizhen/.ssh"目录下。
接着在master节点上做如下命令,把id_rsa.pub追加到授权的key里面去。
修改文件"authorized_keys" 权限:
用root用户登录服务器修改文件"/etc/ssh/sshd_config"的下列内容:
将下列内容所在行的前面的#去掉
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径
设置完之后记得重启SSH服务,才能使刚才设置有效。
(/etc/init.d文件夹下放置系统的服务,ssh是一种服务)
退出root登录,使用xuyizhen普通用户验证是否成功。
从上图中得知无密码登录本级已经设置完毕.
接下来的事儿是把master公钥复制给slave1。使用下面的命令格式复制公钥:
(192.168.0.22是slave1的地址)
在slave1机器上创建.ssh文件夹,然后修改文件夹".ssh"的用户权限,
到目前为止,在slave1机器上,关于master的公钥也有了,文件夹".ssh"也有了,且权限也修改了。
下一步就是把master的公钥追加到slave1的授权文件"authorized_keys"中去。
使用下面命令进行追加并修改"authorized_keys"文件权限:
4)用root用户修改xuyizhen3computer节点的"/etc/ssh/sshd_config"
记得重启ssh服务
最后记得把"/home/xuyizhen/"目录下的"id_rsa.pub"文件删除掉。
到此为止,我们经过前5步已经实现了从master到slave1的无密码登录.(由于我们的配置工作是针对xuyizhen用户的,所以只有xuyizhen用户能实现无密码登陆,如果想实现其他用户如root用户的无密码登陆,只需要在其他用户下操作上述过程即可)
以上是配置两台计算机之间的无密码登陆,假设现在要配置3台机器之间的无密码登陆,以ABC为例,那么就得依次生成密钥对,再通知其他机器。
A生成密钥对,A配置完毕后,将公钥给BC,再分别到BC上配置,这实现A到BC的无密码登陆。
B生成密钥对,B配置完毕后,将公钥给AC,再分别到AC上配置,这实现B到AC的无密码登陆。
C生成密钥对,C配置完毕后,将公钥给AB,再分别到AB上配置,这实现C到AB的无密码登陆。
至此,才实现了ABC之间的无密码登陆。
好了,至此配置应该没有什么问题了,下面我们来说原理:
以A,B为例,以前从A登陆B,总是需要密码验证,很繁琐。那么我可以不可以使用密码登陆一次之后,就让B记住当前登陆的就是A,我们想到密钥对了,在A上生成密钥对,然后将A的公钥传给B,这样以后B就可以通过验证是否与A的公钥匹配来判断当前登陆的的是否是A了。
关于ssh协议,请看http://blog.csdn.net/macrossdzh/article/details/5691924