1. SSH无密码验证的原理
Master作为客户端,要实现无密码公钥认证,连接到服务器Salve上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Salve上。当Master通过SSH链接到Salve上时,Salve会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Salve,Salve确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,期间不需要手工输入密码,重要的过程是将Master上产生的公钥复制到Salve上。
2.SSH无密码登陆的几种关系
通常情况下,一个集群服务下至少有一个Master和若干个Slave
,那么无密码登陆通常指的是由Master到任意一个Slave的无验证的单向登陆,意思就是只能从Master登陆到Slave是不需要密码的,但是如果你想从Slave无验证登陆到Master,或者你想在Slave与Slave之间进行无验证登陆,这些都是不可行的,除非,你进行了密钥对的双向验证,才可以双向登陆,我们在这里先不去议论相互之间登陆有没有意义,可能某些情况下或许需要这些方式
10机器切换为hadoop用户,生成公钥和私钥
ssh-keygen -t rsa -P ''
把id_rsa.pub追加到授权的key里面去。
cat~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
在验证前,需要做两件事儿。第一件事儿是修改文件"
authorized_keys
"权限(
权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用
RSA
功能
),另一件事儿是用root用户设置"
/etc/ssh/sshd_config
"的内容。使其无密码登录有效。
1)修改文件"authorized_keys"
chmod 600~/.ssh/authorized_keys
2
)设置
SSH
配置
RSAAuthentication yes #启用RSA认证
PubkeyAuthentication
yes #启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径(和上面生成的文件同)
设置完之后记得重启SSH服务,才能使刚才设置有效。
从上图中得知无密码登录本级已经设置完毕,接下来的事儿是把
公钥
复制
所有
的Slave机器上。使用下面的命令格式进行复制公钥:
scp
~/.ssh/id_rsa.pub远程用户名@远程服务器IP:~/(以hadoop-standby为例)
3
)追加到授权文件
"
authorized_keys
"
进入11-19机器
如果不存在~/.ssh (此处最好用ssh-keygen的命令自动生成.ssh)
4
)用
root
用户修改
"/etc/ssh/sshd_config"
具体步骤参考前面hadoop-active的"设置SSH配置",具体分为两步:第1是修改配置文件;第2是重启SSH服务。
5)重复以上步骤,配制其他机器