Linux SSH 基于密钥交换的自动登录原理简介及配置说明

一、协商交互过程

  1. 客户端向目标服务器发送登录请求。在SSH 服务启用了证书验证登录方式后,会优先通过证书验证方式进行登录验证。
  2. 目标服务器根据 SSH 服务配置,在用户对应目录及文件中读取到有效的公钥信息。
  3. 目标服务器生成一串随机数,然后使用相应的公钥对其加密。
  4. 目标服务器将加密后的密文发回客户端。
  5. 客户端使用默认目录或 -i 参数指定的私钥尝试解密。
  6. 如果解密失败,则会继续尝试密码验证等其它方式进行登录校验。如果解密成功,则将解密后的原文信息重新发送给目标服务器。意思类似于:“看,这是这段话的原文。我能读懂发过来的密文,我拥有服务器的控制权,请让我登录。”
  7. 目标服务器对客户端返回的信息进行比对。如果比对成功,则表示认证成功,客户端可以登录。如果对比失败,则表示认证失败,则会继续尝试密码验证等其它方式进行登录校验。

证书校验交互登录流程示意图所示:

在这里插入图片描述

1.1 、Linux客户端演示登录:

①、在客户端本地生成一对儿密钥:
[root@localhost ~]# ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa
Generating public/private rsa key pair.
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
cb:e4:e8:69:19:86:f7:52:59:95:43:40:ce:c9:06:b9 root@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
|        .ooo..   |
|        .= .+    |
|         .*. .   |
|        E..      |
|     .  So       |
|    . +=o.       |
|     o.=+        |
|     .+..        |
|     .o.         |
+-----------------+



| 参数 | 含义 | 解释 |
| :--- | :--- | :--- |
| `ssh-keygen` | 密钥生成工具 | OpenSSH 套件中用于创建认证密钥对的程序。 |
| `-t rsa` | **指定密钥类型** | `-t` 是 type 的缩写。`rsa` 是一种非对称加密算法。这是最常用和兼容性最好的算法之一(其他还有 `ed25519`, `ecdsa`)。 |
| `-P ''` | **设置私钥的密码(Passphrase)** | `-P` 后面跟一个密码字符串。**`''`(两个单引号)表示空密码**。这意味着生成的私钥文件**没有密码保护**。**这是一个安全权衡:方便自动化脚本,但降低了密钥本身的安全性。** 如果密钥文件泄露,任何人都可以直接使用它。 |
| `-f /root/.ssh/id_rsa` | **指定密钥文件的保存路径和文件名** | `-f` 是 file 的缩写。这里指定将私钥保存为 `/root/.ssh/id_rsa`,公钥则会自动保存在**同名目录下的同名文件加上 `.pub` 后缀**,即 `/root/.ssh/id_rsa.pub`。 |

在这里插入图片描述

②、在客户端,将公钥复制到要登录的远程主机的某用户的家目录下的特定文件中:
[root@localhost ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.10.23
The authenticity of host '192.168.10.23(192.168.10.23)' can't be established.
ECDSA key fingerprint is dd:6d:e8:68:72:c9:8f:d8:32:18:ba:19:6e:52:4a:60.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.10.23's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.10.23'"
and check to make sure that only the key(s) you wanted were added.

在这里插入图片描述
另一台可以查看:
在这里插入图片描述

③、测试登录:
[root@localhost ~]# ssh root@192.168.10.23
Last login: Sat Mar 25 21:03:27 2017 from 192.168.77.1
[root@localhost ~]# ip addr list ens33
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:f0:98:fd brd ff:ff:ff:ff:ff:ff
    inet 192.168.77.131/24 brd 192.168.77.255 scope global dynamic ens37
       valid_lft 1280sec preferred_lft 1280sec
    inet6 fe80::41e6:5671:d095:3c24/64 scope link
       valid_lft forever preferred_lft forever
[root@localhost ~]# exit
logout
Connection to 192.168.77.131 closed.

在这里插入图片描述

二、Windows环境Xshell登录演示:

  1. 打开Xshell程序。
  2. 单击 工具 > 用户密钥管理者 ,再点击 生成 。
  3. 在打开的密钥创建向导中,选择默认的 RSA 密钥算法及密钥长度(默认 2048 位)后,点击 下一步 。
  4. 程序生成密钥对后,点击 下一步。
  5. 如前面所述,密钥加密密码留空:
    img

6、复制生成的公钥到目标主机的/root/.ssh/authorized_keys 尾部追加

img

img

[root@localhost ~]# echo 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA1WPScj31fl+c8biyb9PbQILRX5s4fZkdaOAqy2d043edDkbVi0FHymyVELu5cIBmJ8oQIBnHAs9jQmzxyDNQoZ0hO3lUC6a9eqp0kgj/dX31FghJzCVK5+dE9qSvGu6nRz3wN5F/xvs/hTuFzipFBwB1C51lchdrUiZcDfSrqMkWhKcmF+axK0CKHSDo2lwxqYCcW9b1d7Ww==' >> /root/.ssh/authorized_keys

7、复制完成后返回Xshell,输入目标主机IP,用户身份认证选择公钥认证:

img

img
点击“确定” 就能连接上了。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

总结

本次学习重点掌握了 SSH 密钥登录的原理与实操,涵盖 Linux 客户端和 Windows Xshell 两种场景,核心是通过 “非对称加密” 实现更安全的远程登录,避免密码泄露风险。

原理上,SSH 密钥登录需经历七步协商交互:客户端发登录请求后,服务器读取公钥、生成随机数加密发送;客户端用私钥解密并返回原文,服务器比对一致则认证成功,失败则 fallback 到密码验证,全程依赖 “公钥加密、私钥解密” 的非对称逻辑,安全性远高于纯密码登录。

实操方面,Linux 客户端先通过ssh-keygen -t rsa -P ‘’ -f /root/.ssh/id_rsa生成无密码 RSA 密钥对(私钥id_rsa存本地、公钥id_rsa.pub传服务器),再用ssh-copy-id将公钥复制到远程服务器/root/.ssh/authorized_keys,最后ssh 用户名@IP即可无密码登录。

Windows 用 Xshell 时,通过 “用户密钥管理者” 生成 RSA 密钥,将公钥手动追加到服务器authorized_keys,新建会话时选择 “公钥认证” 并关联本地密钥,无需输入密码即可登录。

整个过程核心是保护私钥安全(不可泄露)、确保公钥正确部署到服务器指定文件,相比密码登录,既提升了安全性,也简化了频繁登录的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值