先说下环境:
系统:centos7 64位(总共3个,两个vmware,一个笔记本)
硬件:VMware,笔记本
主机名:master:h1(192.168.1.55),slave:h2(192.168.1.56),h3(192.168.1.57)
接着启动三台主机,登录到root,每个主机执行以下命令
#设置主机名hostnamectl set-hostname h2
#建立用户
useradd hadoop
#设置密码,我这里为test123
passwd hadoop
#切换到hadoop用户
su hadoop
#生成秘钥
cd ~
#回车一次后要求输入秘钥密码,我这里为helloword123
ssh-keygen -t rsa
cd .ssh
#将公钥保存到authorized_keys
cp id_rsa.pub authorized_keys
#设置权限
cd ..
chmod 755 ~
chmod 755 .ssh
cd .ssh
chmod 644 id_rsa.pub
chmod 644 authorized_keys
chmod 600 id_rsa
然后复制authorized_keys的内容,最终会得到三个秘钥,将刚才复制的内容合在一起,替换到各个主机里的authorized_keys里。
这还没结束,回到root账户,找到/etc/ssh/sshd_conf文件,将RSAAuthentication yes和PubkeyAuthentication yes前的#去掉,再在命令里输入service sshd restart重启sshd服务
最后切换到hadoop用户,输入ssh h2,这时可能会提示你输入秘钥密码,如果提示了,输入一次秘钥密码后以后不会再提示。下面附上操作中的一些命令。
[root@h2 桌面]# useradd hadoop
[root@h2 桌面]# passwd hadoop
更改用户 hadoop 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@h2 桌面]# su hadoop
[hadoop@h2 桌面]$ cd ~
[hadoop@h2 ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Created directory '/home/hadoop/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
80:4e:cb:bd:e1:0c:d3:36:2c:8b:ea:e8:ae:84:c6:79 hadoop@h2
The key's randomart image is:
+--[ RSA 2048]----+
| |
| . |
| o . |
| + = . |
| B B S |
|o .. O + |
|.=.E. + |
|+.. |
|O+ |
+-----------------+
[hadoop@h2 ~]$ cd .ssh
[hadoop@h2 .ssh]$ cp id_rsa.pub authorized_keys
[hadoop@h2 .ssh]$ chmod 755 ~
[hadoop@h2 .ssh]$ chmod 755 .ssh
chmod: 无法访问".ssh": 没有那个文件或目录
[hadoop@h2 .ssh]$ cd ..
[hadoop@h2 ~]$ chmod 755 ~
[hadoop@h2 ~]$ chmod 755 .ssh
[hadoop@h2 ~]$ cd .ssh
[hadoop@h2 .ssh]$ chmod 644 id_rsa.pub
[hadoop@h2 .ssh]$ chmod 644 authorized_keys
[hadoop@h2 .ssh]$ chmod 600 id_rsa
sshd_conf文件
[hadoop@h2 .ssh]$ exit
exit
[root@h2 桌面]# service sshd restart
Redirecting to /bin/systemctl restart sshd.service
确保所有主机上完成以上命令后,找到主目录下.ssh文件夹下的authorized_keys文件,将其内容复制合并到一起。
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/Zc/dcCtqjqzbb69MOR2mt3lgsefZeELdJJc5KWPPARNmUF4CSdhyUEIbAW2RYO8FuyMLB9/3pFcpAjKTRtWs//TU+n3hGc299/15y++x5F9vPcllkoCKhV0uKSswQLhnhFSZ5QDPJLpU64FfqVDypVo7iqd3kackj1Ym4LPM7WhfttW3u5GbW5j4Sbxo6wOjfDQajXVQZgf2o8WbQMGUQPf7rpYRh+KwPXEtPl4/KA1Q6pPW4Ry6Oi1v4WfdwXdVETMO6le2hCBzL2p8rZ1JWEKq3l8rJehbM4o8l7Zde6jbBBNxLAjFM7SxC6X6g1z+5EbVwxIOsnWheHCWJKrJ hadoop@h1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDv7Z5buar7HnTw0jPsB5taMRLiRQfIbIPsVTatRuXul3wMVNV0kuK+4KkCkEIAE2CWVnVWb3cZWp72VdHlS0840kmP7fUT9MRhSDzvfwk3CTFN+usHUHt6E658urnmgAqlXNPe4178TPkwtwX/sz6xsl3FlsX8vSVjoh3O2445cY9W5hT6uI3XhZXGq+KFj4J43anOQY3vWghoGshVoKy2PJ49zZzpclx4rKtT5DsmiABIrZfgixDbRPdFw1K0ITq9c0AysM5pbNvgLul3K4oISgGfW97hVlhJprqW/SDD3X+qUkCt8EmfTJZVb2Z5sQ+T6DZUVQDJDQautIkpxoUd hadoop@h3
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDgTCUlUM9tHJkxKS4RuIxcRgHD3bTxqgLLKspMGDDBrLYFNyS1pShlRCJHGbPJ9Igjrs5UmoUspaizgLzGZSvsjJdvAcQUWrD/XsYuLhI5dGFtd2vqxM/eh2JBriFwXErEbin4Ai5pOd0nZac9hiVeZCDm8r6HMv68ezt7YzAWdpLqIKdwck8Y74EzOoNSC9nZJOHso4oKsCetcuijZjJt/H8CK1OUth6jRe2UjTDq0FI4Uu85i0gEknGyOpjzhqogG3ii1rOAmvpsrt1hh8nHF/q9KvMB3zKc4XEUeIzITcqfFoNxIqYlTSI0n6PfFx/mXQVh6xkz2sU8p0nRIFPf hadoop@h2
将合成的包含三个秘钥的文件分别替换到各个主机上hadoop用户对应的位置。
下面是验证了,在h3主机里输入
[hadoop@h3 桌面]$ ssh h1
The authenticity of host 'h1 (192.168.1.55)' can't be established.
RSA key fingerprint is 5f:3f:d9:c5:ab:37:29:b7:f6:01:13:82:d7:1c:1b:a0.
Are you sure you want to continue connecting (yes/no)? yes
输入yes弹出了这样的一个页面
输入秘钥,记得勾选下面的那个checkbox,然后以后再ssh的时候就不会再弹出了。
最终命令如下
[hadoop@h3 桌面]$ ssh h1
Last login: Thu May 21 11:30:37 2015 from 192.168.1.58
[hadoop@h1 ~]$
注:假如全部正确操作,但是ssh的时候提示Agent admitted failure to sign using the key,那么切换到主目录执行以下ssh-add命令,重新连接即可。
另外关于主机名的下篇补上
补充一下,测试的时候一定要在hadoop账户下,在其他账户下通过su hadoop登陆的仍然会要求输入秘钥