最近在研究hadoop,因为是分布式的,会涉及很多机器协作工作,但所有的操作都是需要进行权限验证的,namenode主机会尝试启动datanode主机上的进程等等。下面就用一张图来解释SSH登录验证的原理.
注意上面说明中的1和2都是手动执行的
第一步手动执行生成公钥和私钥对命令为ssh-keygen这个在ssh手册中是可以查询到的
执行上面的命令后会提示将生成的公钥及私钥对存放到哪里,这里默认即可
我们可以到~/.ssh目录中找到生成的公钥及私钥对如下
id_rsa.pub就是生成的公钥,而id_rsa则为私钥.其实里面存放的就是一个字符串.正常情况下authorized_keys文件是不存在的,我们需要在C机器上手动创建这个文件夹,然后将A机器的公钥cp到C机器上,执行 cat id_rsa.pub >> authorized_keys ,将A机器的公钥写到C机器的验证秘钥文件中去,注意这里是追加,不能进行覆盖,因C机器可能保存在多个机器的公钥。这里注意一下authorized_keys文件的权限,必须为自己可读写,其他用户组及自己组的用户是没有任何权限的。这才能生效。我截取了man ssh中的一段话,可自行进行查看
到此,ssh远程登录原理及操作完毕,现在可以进行无需密码即可进行在机器A上操作C机器了