引言
这是几年前写的文章,但一直以来该问题被反复问到。所以我决定将它又一次搬上屏幕。
正文
三个节点:masternode slavenode1 slavenode2
第一步:全部节点分别生成密钥对
全部节点都要做:命令行中,在当前用户根文件夹运行
ssh-keygen -t rsa
密钥成功生成后是存储在当前用户根文件夹下的.ssh隐藏文件夹下,直接用 cd .ssh 就能进入,然后用ls命令就能看到id_rsa id_rsa.pub
第二步:拷贝生成authorized_keys
全部节点都要做:将id_rsa.pub复制到文件anthorized_keys文件里。在 .ssh 目录下用命令
cp id_rsa.pub authorized_keys
第三步:合并全部节点的authorized_keys文件,并分发到全部节点根文件夹的 .ssh 隐藏文件夹下
slavenode1中将authorized_keys发送到masternode的temp1暂时文件里:
scp ~/.ssh/authorized_keys masternode:~/.ssh/temp1
slavenode2中将authorized_keys发送到masternode的temp2暂时文件里:
scp ~/.ssh/authorized_keys masternode:~/.ssh/temp2
masternode中将temp1和temp2附加到authorized_keys文件里,这种话masternode的authorized_keys文件就包括了全部节点的公钥:
cat ~/.ssh/temp1 >> ~/.ssh/authorized_keys
cat ~/.ssh/temp2 >> ~/.ssh/authorized_keys
rm ~/.ssh/temp1
rm ~/.ssh/temp2
masternode中将合并好的authorized_keys文件分发到各节点:
scp ~/.ssh/authorized_keys slavenode1:~/.ssh/
scp ~/.ssh/authorized_keys slavenode2:~/.ssh/
第四步:全部系统配置 /etc/ssh/sshd_config 文件,使得系统使用公钥认证,并能识别 authorized_keys
cd /etc/ssh/ 以后,sudo gedit sshd_config 在文件里找到下面几行
RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile%h/.ssh/authorized_keys
把#去掉就可以,系统就能通过authorized_keys来识别公钥了
第五步:检查sshd是否执行/安装。假设未安装将不能成功相互连接
执行 ps -e | grep ssh。查看是否有sshd进程
假设没有,说明server没启动。通过 /etc/init.d/ssh -start 启动server进程
假设提示ssh不存在 那么就是没安装server
通过 sudo apt-get install openssh-server命令安装就可以
第六步:解决 Agent admitted failure to sign using the key
假设出现该错误,则须要在全部的节点都运行 ssh-add ~/.ssh/id_rsa 将私钥增加ssh。
至此,大功告成。。应该就能够在随意一台机器使用 ssh masternode/slavenode1/slavenode2 避password彼此连接了!!!
版权声明:本文博主原创文章。博客,未经同意不得转载。