ssh-keygen和ssh-copy-id实现免密登录远程主机

       ssh免密登录在实际工作中有重要的作用,甚至有的应用部署也必须要免密登录远程主机,例如hadoop环境搭建。

       免密登录,需要先在本机生成公钥,然后将公钥拷贝到远程主机,拷贝的过程,既可以手动(在远程主机根目录下创建.ssh目录,然后将公钥存入该目录下authorized_keys文件中即可),也可以直接命令操作ssh-copy-id,这个操作做完了,即可免密登录远程主机。

         仔细回想这个过程,先在本机生成公钥,然后将公钥复制到远程主机,接着就可以免密登录远程主机,这个过程似乎与我们想想的不太一样,我们可能希望远程主机免密登录本机。这就好比我要去朋友家,我先将我们家的钥匙放在朋友家,结果我就可以随便进入朋友家里。正常来说,我家钥匙在朋友家里,应该是朋友随便进入我家。通过实验我们来看是什么样的。

这里假定我们需要在node01上远程登录node02机器,这样的话,默认ssh登录,需要输入node02上root用户的密码。如下图所示:


node02上本身是没有.ssh目录的。


一、生成类型rsa免密的公钥。

#ssh-keygen -t rsa -P ""

遇到提示,一路回车即可。


查看刚刚生成的公钥id_rsa.pub


二、将公钥通过命令ssh-copy-id放入node02机器上。

#ssh-copy-id root@node02

执行这一步操作,需要输入node02上root用户登录的密码。


执行成功之后,我们在node02上查看/root/.ssh目录已经生成,并且多了一个名为authorized_keys的文件,里面保存的正是node01上ssh-keygen生成的id_rsa.pub的内容。


三、远程登录node02,无需密码,直接登录成功,如图所示。


另外:免密登录本机也是可以的,默认是需要密码的,只需要将id_rsa.pub拷贝一份保存为authorized_keys。接着ssh登录本机,直接登录成功。


       ssh免密登录的过程我们已经清楚了,现在来说说是怎么回事,为什么和我们想象的不一样。

       ssh-keygen的过程,其实不光生成了id_rsa.pub,同时还生成了id_rsa这个文件,这个文件就是私钥,保存在本机的。ssh远程登录的过程,先是客户端请求远程主机,远程主机根据authorized_keys中本机公钥的内容加密一个请求,返回给客户端,客户端然后利用私钥对这个请求解密,再发送给远程主机,远程主机收到了准确的应答,即认为是该客户端是可信的,因此允许登录。该过程可以通过如下图所示更直观。


       远程主机上的authorized_keys文件中可以保存多个公钥。多个公钥直接追加在末尾。

       了解ssh免密登录的过程,再回过头来,我们发现其实这种方式和远程主机的密码没有任何关系,我们无需知道密码,或者密码随便更改,我们只要保证远程主机有我们的公钥,而我们本地有这么一对公钥和私钥就可以了。

  • 16
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luffy5459

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值