作者:杜延振
日期:2016/3/29
1.在用户目录下执行命令
ssh-keygen -t rsa
一路回车:
2.在当前用户目录下,进入.ssh文件夹(.ssh文件夹为隐藏文件夹,直接进去即可)。
在.ssh文件夹下执行命令:
cat id_rsa.pub > authorized_keys
即把id_rsa.pub文件的内容写进authorized_keys文件中
此时运行命令:ll
查看生成的authorized_keys文件的权限,如果没错的话该文件应该带有写权限,当有写权限时,是不能进行无密钥登陆的,因为此时不安全。
修改authorized_keys文件的权限:
chmod go-xw -t authorized_keys
此时再执行命令:ssh h2(因为我把本机的hostname改成了h2,所以ssh h2代表登陆本机,其中ssh后面应改成你自己对应的:可查看刚生成的文件authorized_keys
)
则不会再让输入密码。如下图:
至此,就实现了本机无密钥登陆。
3.把剩余的机器在其对应机器上重复步骤1,2.
4.把各个机器上生成的authorized_keys文件的内容合并成一个,并用该文件替换每个机器上的authorized_keys文件,如图:
至此即可实现各个机器之间无密钥登陆
补充:若只是实现master免秘钥登陆到slave节点,只将master节点生成公钥复制到各个slave节点就能实现目的。
原理:Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode |Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。
网友评论