说明:此处是以hadoop虚拟机3台机器为背景进行设置,即master、slave01、slave02
1、在master上,生成公钥、私钥
用hadoop用户登录系统,进入个人主目录,即/home/hadoop,执行命令
ssh-keygen -t rsa -P ''
说明:以rsa算法,生成公钥、私钥,-P '',表示是空密码;该命令执行完后,会在个人主目录下生产.ssh目录,里面会有两个文件,id_rsa(私钥)和id_rsa.pub(公钥);该目录为隐藏目录,可用以下命令查看:
ls -lah
2、导入公钥
进入.ssh目录,执行以下命令:
cat id_rsa.pub >> authorized_keys chmod 600 authorized_keys #修改文件权限
本机测试,ssh localhost,如果不需要密码可以登录,说明连接成功。
3、在其他机器上同样生成公钥、私钥,并将公钥文件复制到master机器
3.1 用hadoop用户登录到slave01、slave02,执行 ssh-keygen -t rsa -P '' 生成公钥、私钥
3.2 用scp将公钥文件拷贝到master机器上
slave01: scp .ssh/id_rsa.pub hadoop@master:/home/hadoop/id_rsa_01.pub
slave02: scp .ssh/id_rsa.pub hadoop@master:/home/hadoop/id_rsa_02.pub
执行后,在master机器上,查看/home/hadoop目录,里面会有id_rsa_01.pub和id_rsa_02.pub两个文件,然后在master机器上,导入这两个公钥
cat id_rsa_01.pub >> .ssh/authorized_keys
cat id_rsa_02.pub >> .ssh/authorized_keys
这时,master机器就有3台机器的公钥了。
4、将master上的公钥,复制到其他机器上
4.1 在master机器上执行以下命令
scp .ssh/authorized_keys hadoop@slave01:/home/hadoop/.ssh/authorized_keys scp .ssh/authorized_keys hadoop@slave02:/home/hadoop/.ssh/authorized_keys
4.2 在其他机器上修改authorized_keys文件的权限
chmod 600 .ssh/authorized_keys
5、验证
每两台机器之间进行互连,看是否能无密码登录,命令:ssh 机器名。
常见错误1:提示 bash: ssh: command not found
解决:yum -y install openssh-clients
常见错误2:在使用scp的时候会让输入master机器的hadoop用户密码
解决:提前把hadoop的密码设置好,passwd hadoop