Linux间实现ssh免密登入
在搭建hadoop环境时,要实现机器间的免登入,我通过网上查资料,差不多熟悉了实现的方法,所以整理一下, 避免自己忘记,也给别人一个参考!
-
三台机器的属性:
name:master ip:192.168.234.12 operatesystem:centos 6.3 主节点 name:slave1 ip:192.168.234.13 operatesystem:centos 6.3 子节点1 name:slave2 ip:192.168.234.14 operatesystem:centos 6.3 子节点2
三个机器的hadoop用户都为learn,即三台机器操作环境为learn用户
操作前修改一下/etc/hosts文件,将这三个ip都添加进去(三台机器都需要进行这个步骤
命令:
vi /etc/hosts
将一下内容添加进去:
192.168.234.12 master 192.168.234.13 slave1 192.168.234.14 slave2 #千万别写错,如果写错,以后的操作会报错
-
第一步
- 首先在各个机器中生成id_dsa.pub
在各个机器中输入以下命令
ssh-keygen -t rsa
:生成公共密钥 之后按三次回车就可以了,你查看/home/learn/.ssh目录就会发现多了两个文件,分别为id_rsa, id_rsa.pub
-
再将目录中的id_dsa.pub,复制一份并改名为authorized_keys(每台机器都需要)
命令:
cp /home/learn/.ssh/id_rsa.pub /home/learn/.ssh/authorized_keys
-
第二步:
-
将slave1节点和slave2节点的authorized_keys 追加到master的authorized_keys
换句话说就是,将slave1和slave2的authorized_keys里的东西复制粘贴到master的authorized_keys master的authorized_keys就有了三个公共密钥
具体的操作命令:
scp /home/learn/.ssh/authorized_keys learn@192.168.234.12:/home/learn/authorized_keys1 #在节点1的操作 scp /home/learn/.ssh/authorized_keys learn@192.168.234.12:/home/learn/authorized_keys2 #在节点2的操作之后你就会发现master的/home/learn/.ssh目录多了两个来自节点1和节点2的公共密钥
-
在master上的操作:
cat /home/learn/.ssh/authorized_keys1 >> /home/learn/.ssh/authorized_keys cat /home/learn/.ssh/authorized_keys2 >> /home/learn/.ssh/authorized_keys 执行#后master的authorized_keys文件中就有了三个公共密钥了
-
-
第三步:
用master上的/home/learn/.ssh/authorized_keys替换节点1,节点2的authorized_keys文件
在master上的操作
scp /home/learn/.ssh/authorized_keys learn@192.168.234.13:/home/learn/.ssh/authorized_keys #替换节点1 scp /home/learn/.ssh/authorized_keys learn@192.168.234.14:/home/learn/.ssh/authorized_keys #替换节点2
-
第四步:
通过前面的三步你发现,并不能免密码登入,这时候就需要第四步,改权限
-
对三台机器都使用下面的命令:
chmod 600 /home/learn/.ssh/authorized_keys
必须拥有root权限
-
检验:
ssh 192.168.234.13
(我用的是远程登入工具,在master内的操作)ssh 192.168.234.14
(这时候你就可以不用输入密码,直接登入)