您的位置:首页 > Web前端

Fedora SSH无密码验证配置

2012-10-11 01:03 246 查看
原文转载: http://blog.163.com/darkness@yeah/blog/static/1317744842011325111433803/
Namenode作为客户端,要实现无密码公钥认证,连接到服务端datanode上时,需要在namenode上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到datanode上。

当namenode通过ssh连接datanode时,datanode就会生成一个随机数并用namenode的公钥对随机数进行加密,并发送给namenode。

namenode收到加密数之后再用私钥进行解密,并将解密数回传给datanode,datanode确认解密数无误之后就允许namenode进行连接了。

这就是一个公钥认证过程,其间不需要用户手工输入密码。

重要过程是将客户端namenode公钥复制到datanode上。

1)所有机器上生成密码对
所有节点上执行以下命令:
# ssh-keygen
这将在/root/.ssh/目录下生成一个私钥id_rsa和一个公钥id_rsa.pub。


把namenode节点上面的id_rsa.pub 复制到所有datanode节点/root/.ssh/位置。
(注意:原文没有细说,这是指把id_rsa.pub先拷贝成authorized_keys,再将authorized_keys复制到其它datanode上的)
# cp id_rsa.pub authorized_keys


namenode的公钥

# chmod 644 authorized_keys


使用SSH协议将namenode的公钥信息authorized_keys复制到所有DataNode的.ssh目录下(.ssh下最初没有authorized_keys,如果有,则需要复制追加,后面会讲到如何追加)。
# scp authorized_keys [data节点ip地址]:/root/.ssh


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

# ssh [节点ip地址]


2)配置每个Datanode无密码登录Namenode


(a)原理
Namenode连接datanode时namenode是客户端,需要将namenode上的公钥复制到datanode上,那么,如果datanode主动连接namenode,datanode是客户端,此时需要将datanode上的公钥信息追加到namenode中的authorized_keys之中。(此时,由于namenode中已经存在authorized_keys文件,所以这里是追加)。
如果进一步需要datanode之间实现公钥无密码验证,则同样需要相互之间追加公钥信息
(b)将各个datanode上的id_rsa.pub追加到namenode的authorized_keys

在所有datanode上依次执行如下命令:
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的公钥信息追加:
# cat [datanode ip地址].id_rsa.pub >> authorized_keys


这样,namenode和datanode之间便可以相互ssh上并不需要密码......
注意:整个过程中只涉及到创建密钥,复制公钥,添加公钥内容,没有更改配置文件,实际上配置文件/etc/ssh/sshd_config中开启了公钥验证
{
RSAAuthentication yes
PubkeyAuthentication yes
}

3) 注意

1.以上过程为两台机器的无密码访问, 如果需要N台电脑访问无需密码, 道理跟上面操作相同。

2.以上过程必须保证每台机器都安装和配置好了ssh, 并且保证每台机器固定了IP
(不然你弄好了无密码访问,关机重启后IP一变你就白配了)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: