CentOS 集群机器之间ssh免密
简介
SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。
为后续搭建Hadoop集群或其他集群应用时于机器之间免密码登录和执行脚本。
下面的命令预设都是在hadoop用户下执行。
生成SSH密钥
集群中的每台主机上执行下面命令,一路回车,可生成本机的rsa类型的密钥。
ssh-keygen -t rsa
执行完之后在~/.ssh/目录下会生成一个保存有公钥的文件:id_rsa.pub
修改每台机器上~/.ssh/目录权限:
sudo chmod 700 ~/.shh
把公钥写入authorized_keys文件
在其中一台主机上执行如下命令:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
把其他主机公钥写入到同一authorized_keys
使用scp 将authorized_keys文件拷贝到下一个机器,并且将下一个机器的公钥追加到authorized_keys文件中
scp ~/.ssh/authorized_keys host2@hadoop:/home/hadoop/.ssh
cat ~/.ssh/id_rsa_pub >> ~/.ssh/authorized_keys
重复上面步骤,依次把所有主机公钥写入~/.ssh/authorized_keys
将最终~/.ssh/authorized_keys同步到所有集群机器中
sudo chmod 600 ~/.ssh/*
使用scp依次将~/.ssh/authorized_keys拷贝到其他机器上
验证
远程登录
ssh host1
远程执行shell
ssh hadoop@host1 'ls'
异常
rm ~/.ssh/know-hosts