最近在学习Hadoop相关的资料,它需要各节点之间通过SSH进行免密码登录,配置SSH的时候出现了各种问题,下面就记录一下整体的步骤和一些错误的解决方案。
配置SSH大体分为三步:(1)生成公钥和私钥
(2)导入公钥到认证文件,更改权限
(3)测试
1、生成公钥和私钥
命令:ssh-keygen -t rsa
默认会在~/.ssh目录下生成两个文件:id_rsa(私钥)和id_rsa.pub(公钥)
2、导入公钥到认证文件,更改权限
2.1 导入公钥到本机
命令:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
2.2 导入公钥到需要免密码登录的服务器
(1)首先将公钥复制到服务器
命令:scp ~/.ssh/id_rsa.pub xxx@host:/xxx/id_rsa.pub
(2)然后,将公钥导入到认证文件,在每一台服务器上分别操作
命令:cat /xxx/id_rsa.pub >> ~/.ssh/authorized_keys
(3)在每一台服务器上更改文件权限
命令:chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
3、测试
ssh host,第一次登录可能需要yes确认,之后就可以直接登录了。
虽然看起来到此大功告成!!!步骤是那么的明显和简单,但是这中间简直出现了各种坑爹的问题啊,各种不能免密码登录啊~~~下面一一道来可能的解决办法
可能的解决方案:
(1)注意文件权限的修改,尤其是authorized_keys的权限;
(2)关闭所有机器的防火墙,service iptables stop;
(3)免登录失败还有可能是开始启用了SElinux,在网络服务方面权限要求比较严格,导致低版本系统ssh时使用公钥授权失败。关闭SELinux解决问题。
关闭SELinux的方法:修改/etc/selinux/config 文件,将SELINUX=enforcing改为SELINUX=disabled,重启机器即可。