对于大数据组件的安装,ssh免密登录是最开始的一个步骤。约定:主节点master和两个从节点slave01、slave02。不仅master要免密登录slave,而且也需要ssh自己:master,就需要把master的密钥拷贝到自己的authorized_keys文件里面。假设master、slave01、slave02的用户名分别为:hadoop_master、hadoop_slave01、hadoop_slave02。
1.使用命令生成一对rsa公私钥
1 | ssh-keygen -t rsa [-C "your_email@example.com"] # 邮箱选填 |
然后敲三下回车
生成的密钥会存放在~/.ssh目录下。
id_rsa : 生成的私钥文件
id_rsa.pub : 生成的公钥文件
know_hosts : 已知的主机公钥清单
authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥
2.为slave创建.ssh文件夹(如果存在则这一步省略)
以slave01来演示,slave02类似。
1 | ssh hadoop_slave01@slave01 mkdir -p .ssh |
3.复制公钥到authorized_keys
本地:
1 | cat id_rsa.pub > authorized_keys |
远程(二选一):
1 | 远程复制 |
(上述的创建目录并复制的操作也可以通过一个 ssh-copy-id 命令一步完成:ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop_slave01@slave01)
4.设置权限
.ssh目录的权限必须是700,.ssh/authorized_keys文件权限必须是600。否则会因为权限问题导致无法免密码登录。我们可以看到登陆后会有known_hosts文件生成。
同时要保证.ssh和authorized_keys都只有用户自己有写权限,否则验证无效。
1 | -rwx------ 700 .ssh/ |
命令如下:
1 | chmod 700 ~/.ssh |
附:
1 | -rw------- (600) 只有拥有者有读写权限。 |
对于git的ssh免密登录,可以使用以下命令查看问题:
1 | ssh -vT git@yourhost |
参考: