LInux(二十一)——Linux SSH 基于密钥交换的自动登录原理简介及配置说明
文章目录
- 前言
- 一、SSH 密钥登录原理简介
- 1.1 协商交互过程
- 二、Linux 环境下配置与登录演示
- 2.1 生成密钥对
- 2.2 分发公钥至目标服务器
- 2.3 测试自动登录
- 三、Windows 环境下使用 Xshell 配置密钥登录
- 3.1 生成密钥对
- 3.2 部署公钥至目标服务器
- 3.3 配置 Xshell 连接使用密钥认证
- 总结
前言
SSH(Secure Shell)是一种加密的网络传输协议,用于在不安全的网络中提供安全的远程登录和其他安全网络服务。基于密钥的认证机制是 SSH 提供的一种高安全性且便于自动化的登录方式。本文旨在介绍 SSH 基于密钥交换的自动登录原理,并提供在 Linux 和 Windows 环境下的详细配置步骤,帮助用户实现无需密码的快速、安全登录。
一、SSH 密钥登录原理简介
1.1 协商交互过程
SSH 密钥认证过程基于非对称加密机制,具体流程如下:
- 客户端向目标服务器发起 SSH 登录请求。若服务器启用了密钥认证方式,将优先尝试该方式验证用户身份。
- 服务器根据用户目录下的公钥配置文件(如
~/.ssh/authorized_keys
)读取有效的公钥信息。 - 服务器生成一串随机数,并使用对应用户的公钥对其进行加密。
- 服务器将加密后的密文发送回客户端。
- 客户端使用本地存储的私钥(默认或通过
-i
参数指定)尝试解密该密文。 - 若解密失败,则转而尝试其他认证方式(如密码认证)。若解密成功,客户端将解密得到的原文发回服务器,以此证明其拥有对应私钥。
- 服务器比对客户端返回的原文与之前生成的随机数。若一致,则认证成功,允许登录;否则认证失败,继续尝试其他登录方式。
证书校验交互登录流程示意图所示:
二、Linux 环境下配置与登录演示
2.1 生成密钥对
使用 ssh-keygen
工具生成 RSA 密钥对,命令如下:
ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa
参数说明:
参数 | 含义 | 解释 |
---|---|---|
ssh-keygen | 密钥生成工具 | OpenSSH 中用于创建认证密钥对的程序。 |
-t rsa | 指定密钥类型 | 使用 RSA 算法,兼容性好,也可选用 ed25519 或 ecdsa 。 |
-P '' | 设置私钥密码 | 空密码表示私钥不受密码保护,便于自动化,但安全性降低。 |
-f /root/.ssh/id_rsa | 指定密钥文件路径 | 私钥保存为指定路径,公钥自动保存为同名文件加 .pub 后缀。 |
# 查看私钥和公钥
[root@simon110 ~]# vim /root/.ssh/id_rsa
[root@simon110 ~]# vim /root/.ssh/id_rsa.pub
2.2 分发公钥至目标服务器
使用 ssh-copy-id
工具将公钥复制到目标服务器:
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.10.123
过程中需输入目标服务器用户密码,完成公钥写入。
2.3 测试自动登录
执行以下命令测试是否可实现无密码登录:
ssh root@192.168.10.123
若配置成功,将直接登录远程主机,无需输入密码。
三、Windows 环境下使用 Xshell 配置密钥登录
3.1 生成密钥对
- 打开 Xshell,依次选择【工具】→【用户密钥管理者】,点击【生成】。
- 选择密钥类型为 RSA,长度默认 2048 位,点击【下一步】。
- 生成密钥对后,继续【下一步】。
- 密钥加密密码可留空,以便实现自动化登录。
3.2 部署公钥至目标服务器
-
复制生成的公钥字符串。
-
登录目标服务器,将公钥内容追加至对应用户的
~/.ssh/authorized_keys
文件中:
echo '你的公钥' >> /root/.ssh/authorized_keys
3.3 配置 Xshell 连接使用密钥认证
- 新建或编辑会话,填写目标主机 IP 和用户名。
- 在【用户身份验证】中选择“Public Key”方式,并指定刚才生成的私钥文件。
- 点击【确定】保存配置,即可实现一键登录。
总结
通过以上介绍和演示,我们已经掌握了SSH密钥认证的登录机制及其在Linux和Windows系统下的配置流程。这种认证方式不仅增强了登录安全性,消除了密码传输隐患,还为自动化运维和脚本执行带来了极大便利。
需要特别注意的是,未设置密码保护的私钥文件必须妥善保管,以防泄露造成安全隐患。在实际应用中,建议根据安全需求决定是否设置私钥密码,同时合理调整服务器端SSH配置,在安全性和便捷性之间取得平衡。
整体流程如下:
- 准备阶段:生成密钥对并部署公钥至服务器;
- 认证阶段:客户端请求登录,服务器返回加密随机数,客户端解密并返回原文,完成验证;
- 结果:验证成功则登录,失败则转其他认证方式。