最近要在三台服务器上配置CDH集群,由于需要SSH免密码登录,由于三台服务器的SSH端口都指定了,网上找的很多资料都是使用默认的22端口,折腾了很久,都配置不成功,最终在不经意间想到了问题所在,解决了问题,现在将其配置记录如下。
1.修改/etc/hosts(每台机器上都要执行)
2.修改/etc/sysconfig/network(每台服务器上都要执行)
master服务器上的配置:
修改完成之后重启服务器。
3.修改SSH端口号(每台服务器上都要执行)
修改/etc/ssh/sshd_config文件,在文件中添加如下语句:
Port 30000
这里的端口号可以随意定义,但是要注意不要产生冲突,以便服务器对该端口号的监听。我这里的服务器是在搬瓦工上购买的VPS,SSH端口已经指定,而且三个端口号还不一致,为了让这三台服务器之间可以互相通过SSH登陆,我定义了一个统一的端口号:30000。然后重启该服务:
service sshd restart
修改/etc/ssh/ssh_config文件,在文件中添加如下语句:
Port 30000
需要注意的是,此处定义的作用是规定ssh访问时的端口号,而且,只能设置一个,所以如果之前文件中Port的定义,应先删除,在进行添加。
4.修改防火墙设置
由于安装cloudera manager需要关闭防火墙,所以这里直接关闭防火墙。
# 关闭防火墙
service iptables stop
# 永久关闭防火墙
chkconfig iptables off
# 查看防火墙关闭状态
service iptables status
如果不想关闭防火墙,可以只开放前面设置的端口号,只需在文件/etc/sysconfig/iptables中添加如下语句 ,然后再重启防火墙
# 打开端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 30000 -j ACCEPT
# 重启防火墙
service iptables restart
最后重启ssh服务
service sshd restart
5.生成密钥对(每台服务器上都要执行)
ssh-keygen -t rsa
此条命令执行完之后,会在/home/.ssh/文件夹下生成两个文件
为了避免重名带来的文件覆盖问题,将id_rsa.pub文件重命名为在network中定义的主机名(也可以任意)
mv id_rsa.pub master
6.在一台服务器上使用scp命令将其他两台服务器的公钥拷贝到/home/.ssh文件下
scp -P 30000 /home/.ssh/ slaver-80:/home/.ssh/slaver-80
其中30000是前面指定的端口,slaver-80是在/etc/sysconfig/network中定义的主机名,slaver-80是id_rsa.pub的重命名文件。
7.将3个公钥文件放入authorized_keys文件中
cat master >> authorized_keys;
cat slaver-80 >> authorized_keys;
cat slaver-190 >> authorized_keys;
8.将authorized_keys文件拷贝到其他两台服务器,命令参考第6条。
致此,完成SSH免密码登录。