Linux集群配置免密码登录


本文环境

节点 IP地址
hadoopmaster 192.168.171.10
hadoop001 192.168.171.11
hadoop002 192.168.171.12

原理

每台主机authorized_keys文件里面包含的主机(ssh秘钥),该主机都能无密码登录,所以只要每台主机的authorized_keys文件里面都放入其他主机(需要无密码登录的主机)的ssh秘钥就行了。

配置每个节点的hosts文件

vim /etc/hosts编辑hosts文件,添加如下代码

192.168.171.10 hadoopmaster
192.168.171.11 hadoop001
192.168.171.12 hadoop002

每个节点生成ssh秘钥

[root@hadoopmaster ~]# ssh-keygen -t rsa # 执行命令生成秘钥
...
[root@hadoopmaster .ssh]# ls
id_rsa  id_rsa.pub

执行命令后会在~目录下生成.ssh文件夹,里面包含id_rsaid_rsa.pub两个文件。

执行生成秘钥命令时会让用户选择生成地址,如果想直接使用默认地址(不想交互),则可以使用
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa命令

将每个节点的id拷贝到所有节点的authorized_keys

方法一(推荐)

每个节点执行ssh自带命令,将该节点的id拷贝到其他节点中
[root@hadoopmaster /]# ssh-copy-id hadoopmaster
[root@hadoopmaster /]# ssh-copy-id hadoop001
[root@hadoopmaster /]# ssh-copy-id hadoop002
[root@hadoop001 /]# ssh-copy-id hadoopmaster
[root@hadoop001 /]# ssh-copy-id hadoop001
[root@hadoop001 /]# ssh-copy-id hadoop002
[root@hadoop002 /]# ssh-copy-id hadoopmaster
[root@hadoop002 /]# ssh-copy-id hadoop001
[root@hadoop002 /]# ssh-copy-id hadoop002

方法二

在主节点上将公钥拷贝到一个特定文件中
[root@hadoopmaster /]# cd ~/.ssh
[root@hadoopmaster .ssh]# cp id_rsa.pub authorized_keys # 拷贝到authorized_keys文件中
[root@hadoopmaster .ssh]# ls
authorized_keys  id_rsa  id_rsa.pub
authorized_keys文件拷贝至下一个节点,并将该节点的ssh秘钥加入该文件中
[root@hadoopmaster .ssh]# scp authorized_keys root@hadoop001:/root/.ssh/
root@hadoop001's password:      # 此时会提示输入密码,输入hadoop001主机root密码即可
authorized_keys                                                           100%  399   450.9KB/s   00:00

# 进入001主机    
[root@hadoop001 /]# cd ~/.ssh
[root@hadoop001 .ssh]# ls
authorized_keys  id_rsa  id_rsa.pub
[root@hadoop001 .ssh]# cat id_rsa.pub>>authorized_keys  # 使用cat追加到authorized_keys文件
ssh-rsa AAAAB.....TnYjJ root@hadoop001  
ssh-rsa AAAAB.....Ah+n9 root@hadoopmaster
[root@hadoop001 .ssh]# 

关于scp命令请点击这里查看

重复上一步动作,将每个节点的ssh秘钥都加入authorized_keys文件中
将最后节点生成的authorized_keys文件复制到每个节点下即可
[root@hadoop002 .ssh]# scp authorized_keys root@hadoopmaster:/root/.ssh
...
[root@hadoop002 .ssh]# scp authorized_keys root@hadoop001:/root/.ssh
...

测试登录

使用ssh 用户名@节点名(或ip地址)命令进行无密码登录测试

[root@hadoopmaster .ssh]# ssh root@hadoop001
Last login: Sun Sep 16 17:51:27 2018 from 192.168.171.1
[root@hadoop001 ~]# ssh root@hadoop002
Last login: Sun Sep 16 17:51:31 2018 from 192.168.171.1
[root@hadoop002 ~]# ssh root@hadoopmaster
Last login: Sun Sep 16 17:51:23 2018 from 192.168.171.1
[root@hadoopmaster ~]# 

评论
  目录