由于学习hadoop,集群之间需要SSH无密码登录,那么,在安装hadoop之前,就必须得配置好机器之间的无密码的SSH登录。如何配置无密码SSH登录呢?
我们以在A机器上无密码登录到B机器上为例:
1、切换到需要用来登录的用户,如,我们用A机器名为hadoop的用户登录B机器的hadoop用户下。
su hadoop 切换到hadoop 用户。
2、给两台机器分别改主机名:这里 A:master B:slave1:
修改这个文件etc/sysconfig/network这个文件里的主机名.
NETWORKING=yes
HOSTNAME=主机名
记得重启!!!
并修改hosts映射:
vi /etc/hosts
192.168.1.60 master
192.168.1.61 slave1
192.168.1.62 slave2
写上对应的IP 和主机名
2、A机器:生成rsa公钥:
ssh-keygen -t rsa -f ~/.ssh/id_rsa //-t 加密类型 -f 密钥文件存放路径,如果如下:
[hadoop@master ~]$ ssh-keygen -t rsa -f ~/.ssh/id_rsa
Generating public/private rsa key pair.
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:
e9:ab:f0:48:af:2d:d4:98:59:68:bc:3d:52:3e:94:bc hadoop@master
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| . o . |
| + * . |
| . % .S |
| B E. |
| .o. o. |
| ..* . |
| oo=.. |
+-----------------+
[hadoop@master ~]$ cd .ssh
同样在B机器上执行第二部操作。
3、将A机器 /home/hadoop/.ssh/下的 id_rsa.pub 传输到 B机器的 /home/hadoop/.ssh/ 并重命名为master
[hadoop@master .ssh]$ scp id_rsa.pub hadoop@slave1:/home/hadoop/.ssh/master
hadoop@slave1's password:
id_rsa.pub 100% 395 0.4KB/s 00:00
4、切换到B机器,使用hadoop用户登录,将传过来的master 追加到名为 authorized_keys 的文件,使用
cat master >> authorized_keys //不存在,则会自动创建
5、修改权限,将authorized_keys、id_rsa.pub的权限修改为644
[hadoop@slave1 .ssh]$ chmod 644 id_rsa.pub
[hadoop@slave1 .ssh]$ chmod 644 authorized_keys
此时,SSH免密码登录配置成功
测试,此时,在A机器下使用
[hadoop@master .ssh]$ ssh slave1
Last login: Mon Mar 4 22:23:06 2013 from master
[hadoop@slave1 ~]$
没提示输入密码,配置成功