SSH免密登陆的原理与应用

前言

在Linux中,ssh是我们常用的远程登录方式。

但是,你有没有觉得每次登录时都要输入密码很麻烦。

尤其是“安全系数高”的密码…

那么有没有什么办法可以提高登录效率呢?

当然有,那就是ssh免密登录!

本文就来聊一聊ssh免密登录的原理与应用。

原理

SSH 免密登录的核心原理是非对称加密。

它基于公钥认证,使用一对加密密钥(公钥与私钥)来确保只有拥有正确私钥的客户端才能成功登录。

它具有以下优点:

  • 安全性高:私钥保存在客户端计算机,只有持有正确私钥的客户端才能成功认证。
  • 效率高:不需要在每次连接时输入密码,并且降低了密码泄露的风险。

以下是 SSH 免密登录的详细工作原理:

在这里插入图片描述
结合上图,当客户端使用 ssh username@remote_host 进行连接时,会经历以下步骤:

  1. 连接建立:客户端与服务器建立连接,服务器要求客户端进行身份验证。

  2. 公钥验证

    • 客户端提供它的公钥 ID,告诉服务器它打算使用哪个公钥进行认证。
    • 服务器在 ~/.ssh/authorized_keys 文件中查找是否包含该公钥。
  3. 挑战-响应

    • 如果服务器找到了匹配的公钥,它会生成一个随机数(称为挑战),并使用该公钥加密这个挑战,然后将加密的挑战发送给客户端。
    • 客户端使用它的私钥解密这个挑战。
  4. 响应验证

    • 客户端将解密后的挑战返回给服务器。

    • 服务器验证返回的挑战是否正确。

    • 如果正确,则身份验证通过,客户端可以登录服务器。

应用

通过正确配置和权限设置,可以实现安全可靠的免密登录,步骤如下:

1. 生成密钥对

在客户端计算机上,使用 ssh-keygen 生成一对密钥:

ssh-keygen -t rsa

一路按回车键,最终会在~/.ssh/目录下生成两个文件:

  • 私钥:通常命名为 id_rsa
  • 公钥:通常命名为 id_rsa.pub

2. 配置公钥

将公钥复制到远程服务器的 ~/.ssh/authorized_keys 文件中:

ssh-copy-id username@remote_host

3. 登录

接下来我们就可以在客户端上使用 ssh username@remote_host进行免密登录。

注意:

为了提高安全性,需要确保远程服务器上的 ~/.ssh 目录和 authorized_keys 文件具有正确的权限:

ssh username@remote_host
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

希望本文对大家有帮助,最后欢迎大家关注我的微信公众号《嵌入式三分钟》
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/TIME_LEAF/article/details/142891290
今日推荐