Linux配置集群内节点无密码登录

    • 目的
    • SSH无密登录原理
    • 步骤
      • 修改SSH配置
      • 生成密钥
      • 加载密钥

最近有小伙伴问到Ambari搭建的问题,在实践过程中实在是收获不少。不出意外的话我会陆续更新博文^_^。这里先来说一下如何配置集群间的SSH无密登录。

目的

测试集群现有5个节点(node01 到 node05),现在想要节点间可以无密码SSH登录。

SSH无密登录原理

Master作为客户端,要实现无密码公钥认证,连接到服务器Salve上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Salve上。当Master通过SSH链接到Salve上时,Salve会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Salve,Salve确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,期间不需要手工输入密码,重要的过程是将Master上产生的公钥复制到Salve上。

步骤

修改SSH配置

编辑ssh配置文件

vi /etc/ssh/sshd_config
修改以下内容
RSAAuthentication yes                           #启用RSA 
PubkeyAuthentication yes                        #启用公钥私钥配对认证方式
AuthorizedKeysFile      %h/.ssh/authorized_keys #公钥文件路径

保存后,重启ssh服务:

service ssh restart
#或者
/etc/init.d/ssh restart

生成密钥

ssh-keygen -t rsa

执行上述命令(期间可以一路回车,除非你想要对密钥进行加密)后, 会在当前登录用户目录下创建.ssh文件夹,里面包含了id_rsa, id_rsa.pub。
注意:当前操作的主机为node04.

加载密钥

此时我们需要将公钥加入到authorized_keys文件中

cat id_rsa.pub >> authorized_keys

此时我们还要判断一下authorized_keys的权限,通常赋予600权限即可:

chmod 600 authorized_keys

接着我们测试一下本地无密登录:

ssh localhost

如无意外,执行上述命令即可登录到本机。

接下来将id_rsa.pub发送给集群的其他节点:

#将当前目录下的id_rsa.pub发送到node01下/root/.ssh/node04.pub
scp id_rsa.pub root@node01:/root/.ssh/node04.pub

或者使用循环来发送(针对节点较多的情况)

for i in {1..5};do scp id_rsa.pub root@node0$i:/root/.ssh/$HOSTNAME.pub; done

这样,在每个节点下都有node01.pub 到 node05.pub这几个文件,此时分别加入到authorized_keys文件中

true > authorized_keys && cat node01.pub node02.pub node03.pub node04.pub node05.pub >> authorized_keys

至此,SSH无密登录设置完成!

你可能感兴趣的:(项目实践)