《日子》.分布式之开篇-SSH无密认证

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 ''

《日子》.分布式之开篇-SSH无密认证_第1张图片

把id_rsa.pub追加到授权的key里面去。

cat~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

《日子》.分布式之开篇-SSH无密认证_第2张图片

在验证前,需要做两件事儿。第一件事儿是修改文件"

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服务,才能使刚才设置有效。

《日子》.分布式之开篇-SSH无密认证_第3张图片

从上图中得知无密码登录本级已经设置完毕,接下来的事儿是把

公钥

复制

所有

的Slave机器上。使用下面的命令格式进行复制公钥:

scp

~/.ssh/id_rsa.pub远程用户名@远程服务器IP:~/(以hadoop-standby为例)

《日子》.分布式之开篇-SSH无密认证_第4张图片

3

)追加到授权文件

"

authorized_keys

"

进入11-19机器

如果不存在~/.ssh (此处最好用ssh-keygen的命令自动生成.ssh)


4

)用

root

用户修改

"/etc/ssh/sshd_config"

具体步骤参考前面hadoop-active的"设置SSH配置",具体分为两步:第1是修改配置文件;第2是重启SSH服务。

5)重复以上步骤,配制其他机器

你可能感兴趣的:(《日子》.分布式之开篇-SSH无密认证)