1.SSH无密码原理
master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器salve(DataNode | Tasktracker)上时,需要在master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的slave上。当master通过SSH连接salve时,salve就会生成一个随机数并用master的公钥对随机数进行加密,并发送给master。master收到加密数之后再用私钥解密,并将解密数回传给slave,slave确认解密数无误之后就允许master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端master复制到slave上。
2.master机器上生成密码对
首先关闭 selinux(所有机器上执行)
日期同步(所有机器上执行)
在master节点上执行以下命令:
这条命是生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/root/.ssh"目录下。
接着在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去。
在验证前,需要做两件事儿。第一件事儿是修改文件"authorized_keys"权限(权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用RSA功能),另一件事儿是用root用户设置"/etc/ssh/sshd_config"的内容。使其无密码登录有效。
(1).修改文件"authorized_keys"
备注:如果不进行设置,在验证时,扔提示你输入密码
(2).设置SSH配置
启用并修改以下三个选项
设置完之后记得重启SSH服务,才能使刚才设置有效
户验证是否成功
从上图中得知无密码登录本级已经设置完毕,接下来的事儿是把公钥复制所有的slave机器上。使用下面的命令格式进行复制公钥:
把master上的公钥复制到node1上,复制文件"id_rsa.pub"到服务器IP为"10.2.10.102"的用户为"root"的"~/"下面
登陆node1,并且在/root下创建.ssh
然后是修改文件夹".ssh"的用户权限,把他的权限修改为"700"
追加到授权文件"authorized_keys",到目前为止master的公钥也有了,文件夹".ssh"也有了,且权限也修改了。这一步就是把master的公钥追加到node1的授权文件"authorized_keys"中去。使用下面命令进行追加并修改"authorized_keys"文件权限
修改"/etc/ssh/sshd_config",具体步骤参考前面master的"设置SSH配置",具体分为两步:第1是修改配置文件;第2是重启SSH服务。