美文网首页
深度解读SSH免密登录

深度解读SSH免密登录

作者: 苍简 | 来源:发表于2021-02-10 15:15 被阅读0次

    转载自公众号:未闻Code

    我们都知道SSH是LINUX下很常用的命令,用来远程登陆其他的LINUX系统。如果只有一台,那也只是一个密码 ,也倒还好。但如果是一个集群,每次都输入密码登录,难免会拉低效率。

    但事实上SSH其实是支持两种登录方式,除了常用的密码登录,还有就是密钥登录。今天就探究密钥登录到底是怎么回事。

    为了帮助理解,我画了下面一张图:

    图片

    <figcaption style="margin-top: 5px;text-align: center;color: #888;font-size: 14px;">ssh.png</figcaption>

    其实SSH服务同样可以按照C-S架构来进行划分,这里把我们当前的主机抽象为客户端A,把远程的服务器抽象为服务器B。

    我们首先在本地A主机中生成一对密钥,包括一个私钥和一个公钥。私钥可以理解为用来识别自己身份的表示,公钥可以理解为公开的通行证。

    举个通俗的例子,可以把私钥理解为身份证,公钥理解为读卡器,读卡器识别身份证成功,则放行通过。

    回到话题,A生成一对密钥,然后将公钥复制到B的授权列表,当A再次登录B时,会将私钥带过去和公钥验证。当B的授权队列中存在A时,就通过验证。(kingname 提示:这里有点小小的不准确,如果私钥是传到服务器去验证的,那岂不是中间人可以在中间拦截私钥了?实际上,ssh 发起请求的时候,服务器会给客户端发送一个随机字符串,客户端收到以后,用私钥进行加密,再传给服务器。服务器再用公钥解密,确认是自己之前发送的随机字符串,说明身份认证通过。整个过程中,私钥是不可能在网络中传播的。注意,RSA 加密是公钥加密私钥解密,而RSA身份认证是私钥加密公钥解密。要区分开。)

    命令如下:

    ssh-keygen
    

    该命令在A中生成一对密钥,如下图:

    图片

    一直回车就好了,最后生成一个示意图。

    查看密钥所在目录的文件结构:

    ll .ssh
    

    如下图:

    图片

    其中id_rsa 文件是私钥,.pub文件就是公钥。我们可以通过scp命令直接远程拷贝到服务器主机B的授权目录下,也可以通过ssh快捷部署。

    这里选择快捷部署,命令如下:

    ssh-copy-id 119.45.207.226
    

    这就在主机B上部署了A的公钥,在这之后就可以通过SSH从A免密登录到B。

    如果指定用户,需要在服务器地址前用用户名和@链接,在指定用户时,需要输入一次该用户的密码。需要注意的是这个用户和密码是服务端B主机的用户和对应的密码,如果不指定用户,会默认以A主机正在登录的用户名尝试登录B,如果B中存在同名的主机,就可以登陆成功,若不存在,则不能正确登录。命令如下:

    ssh-copy-id root@B主机地址   #root表示部署到B主机的root用户
    

    如下图:

    图片

    这就将密钥部署到了我的远程服务器B的root用户上,再次登陆时,只需要用ssh 加上远程服务器的地址就能直接登录,如下图:

    图片

    可以看到成功登陆了。

    再看B中的文件结构:

    图片

    看到authorized_keys文件末尾很明显的标识了yq@ubuntu,这就是我的客户端主机A。

    ssh免密登录,就这么简单!

    原文地址:https://mp.weixin.qq.com/s/GcCqvBaRR07_VPnwVdyY5A

    相关文章

      网友评论

          本文标题:深度解读SSH免密登录

          本文链接:https://www.haomeiwen.com/subject/lvkkxltx.html