配置ssh免密码登陆 下载本文

配置ssh实现节点间无密码登陆

注意: 三台机器dns 和 默认网关必须一致。登陆密码一致最好。而且务必三台机器互相ping通主机,即主机名和ip解析正确。

如集群三台机器的IP地址分别为:192.168.23.111、192.168.23.112、192.168.23.113、对应节点主机名为:hadoop1、hadoop2、hadoop3。在三台节点机分别创建用户hadoop,uid=600,密码可相同,也可不同。操作命令以 mpi 用户名为例,如下:

若需修改主机名,需要修改两处:一处是/etc/sysconfig/network,另一处是/etc/hosts,只修改任一处会导致系统启动异常。首先切换到root用户。打开文件:

/etc/sysconfig/network

里面有一行 HOSTNAME=localhost.localdomain (如果是默认的话),修改 localhost.localdomain 为你的主机名。 打开文件: /etc/hosts

有一行 127.0.0.1 localhost.localdomain localhost 。其中 127.0.0.1 是本地环路地址, localhost.localdomain 是主机名(hostname),也就是你待修改的。localhost 是主机名的别名(alias),它会出现在Konsole的提示符下。将第二项修改为你的主机名,第三项可选。 若ping不通,修改/etc/hosts文件,使用sudo vi /etc/hosts命令, hadoop1设置如下(namenode):

192.168.1.100 hadoop1 192.168.1.101 hadoop2 192.168.1.102 hadoop3

Hadoop2(datanode)的设置为:

192.168.1.100 hadoop1

192.168.1.101 hadoop2 192.168.1.102 hadoop3

Hadoop3(datanode)的设置为:

192.168.1.100 hadoop1

192.168.1.101 hadoop2

192.168.1.102 hadoop3

本集群将namenode和 jobtracker 设置成一台机器 即hadoop1。 下面是 hadoop的原始配置方法

Now check that you can ssh to the localhost without a passphrase: $ ssh localhost

If you cannot ssh to localhost without a passphrase, execute the following commands: $ ssh-keygen -t dsa -P ” -f ~/.ssh/id_dsa

$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

按照上面配置, 在root下工作正常实现了免密码登陆, 但是在普通账号下, 则不好用, 如下图:

解决办法, 删除相关文件重新配置 rm -rf .ssh/

删除后结果如下:

确保没有 .ssh目录 然后输入 ssh sch@db

输入下面命令, ssh-keygen -t rsa

当询问Enter file in which to save the key (/home/sch/.ssh/id_rsa): 时直接回车, 选择默认, 询问输入密码时也选择回车,使用默认

执行下面的命令, 特别是 修改 文件权限的两句好像, 是关键!! [sch@db ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys [sch@db ~]$ chmod 700 ~/.ssh

[sch@db ~]$ chmod 600 ~/.ssh/authorized_keys [sch@db ~]$ ll -a .ssh/ total 28

drwx—— 2 sch sch 4096 Oct 1 06:09 . drwx—— 20 sch sch 4096 Oct 1 06:00 ..

-rw——- 1 sch sch 776 Oct 1 06:16 authorized_keys -rw——- 1 sch sch 1675 Oct 1 06:08 id_rsa -rw-r–r– 1 sch sch 388 Oct 1 06:08 id_rsa.pub -rw-r–r– 1 sch sch 384 Oct 1 06:00 known_hosts 如下图

输入ssh sch@db

看到已经免密码登陆了。

拷贝当前目录下配置到,其他服务器, 保证连接其他服务器也是免密码登陆的。 scp -r .ssh/ sch@red:/home/sch

scp -r .ssh/ sch@mongdb:/home/sch scp -r .ssh/ sch@nginx:/home/sch

并测试相关登陆情况, 经过测试, 能正常免密码登陆。