linux SSH无密码验证配置

Namenode作为客户端,要实现无密码公钥认证,连接到服务端datanode上时,需要在namenode上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到datanode上。当namenode通过ssh连接datanode时,datanode就会生成一个随机数并用namenode的公钥对随机数进行加密,并发送给namenodenamenode收到加密数之后再用私钥进行解密,并将解密数回传给datanodedatanode确认解密数无误之后就允许namenode进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端namenode公钥复制到datanode上。

 

 

 

(1)所有机器上生成密码对

所有节点上执行以下命令:

root@hadoop-namenode# ssh-keygen

然后一路回车就可以了。

这将在/root/.ssh/目录下生成一个私钥id_rsa和一个公钥id_rsa.pub

namenode节点上面的id_rsa.pub 复制到所有datanode节点/root/.ssh/位置。

(注意:原文没有细说,这是指把id_rsa.pub先拷贝成authorized_keys,再将authorized_keys复制到其它datanode上的)

root@hadoop-namenode# cp id_rsa.pub authorized_keys

namenode的公钥

root@hadoop-namenode# chmod 644 authorized_keys

使用SSH协议将namenode的公钥信息authorized_keys复制到所有DataNode.ssh目录下(.ssh下最初没有authorized_keys,如果有,则需要复制追加,后面会讲到如何追加)

root@hadoop-namenode# scp authorized_keys data节点ip地址:/root/.ssh

 

这样配置过后,namenode可以无密码登录所有datanode,可以通过命令

“ssh 节点ip地址来验证。

*配置每个Datanode无密码登录Namenode

(0)原理

Namenode连接datanodenamenode是客户端,需要将namenode上的公钥复制到datanode上,那么,如果datanode主动连接namenodedatanode是客户端,此时需要将datanode上的公钥信息追加到namenode中的authorized_keys之中。(此时,由于namenode中已经存在authorized_keys文件,所以这里是追加)

如果进一步需要datanode之间实现公钥无密码验证,则同样需要相互之间追加公钥信息

(1)将各个datanode上的id_rsa.pub追加到namenodeauthorized_keys

 

在所有datanode上依次执行如下命令:

root@hadoop-datanode1# scp id_rsa.pub namenode ip地址:/root/.ssh/datanode ip地址.id_rsa.pub

这将datanode上之前产生的公钥id_rsa.pub复制到namenode上的.ssh目录中,并重命名为datanode ip地址.id_rsa.pub,这是为了区分从各个datanode上传过来的公钥。

复制完毕,在namenode上执行以下命令,将每个datanode的公钥信息追加:

root@hadoop-namenode# cat datanode ip地址.id_rsa.pub >> authorized_keys

这样,namenodedatanode之间便可以相互ssh上并不需要密码......

注意:整个过程中只涉及到创建密钥,复制公钥,添加公钥内容,没有更改配置文件,实际上配置文件/etc/ssh/sshd_config中开启了公钥验证

{

RSAAuthentication yes

PubkeyAuthentication yes

}


注意:有时候你可能把上面这些工作都按部就班的做好了,但是结果不如人意,你还是无法再机器之间进行自由的跳转,那么请你再认真的考虑一遍,你是不是按照这个思路在行事:

机器:m1、m2

目标:m1 想要无密码登录m2

m1 通过 ssh-keygen 生成密码,然后把 id_rsa.pub 文件内容拷贝到机器 m2 中的 /root/.ssh/authorized_keys 文件中。

同样的,如果 m2 要想通过无密码登录 m1,也一样要生成自己的 id_rsa.pub 文件,然后把内容拷贝到 m1 中的 /root/.ssh/authorized_keys 文件中。


如果你的确是按照这些步骤来做的,但是你仍然无法成功的彼此登录,那么你需要查看一下机器对应的网关是不是一样。我遇到的问题就是这个问题,两台机器的网关不一致,导致相互无法访问,即便是你配置了认证,这时候我们要做的就是把他们的网关修改为一致的网关。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值