SSH公钥认证配置指南:Windows到Linux服务器
Table of Contents
技术记录:配置从 Windows 客户端到 Linux 服务器的 SSH 公钥认证
目标:
为 IP 地址为 192.168.74.131 的 Linux 服务器配置 SSH 公钥认证,以允许从 Windows 客户端进行无密码的安全登录。
环境:
- 客户端: Windows 11 (使用内置 OpenSSH 客户端,通过 PowerShell 执行)
- 服务器: Debian GNU/Linux (IP:
192.168.74.131, 登录用户:root)
执行流程
第一阶段:在 Windows 客户端生成密钥对
-
启动 PowerShell: 打开 Windows PowerShell 终端。
-
执行密钥生成命令: 运行
ssh-keygen程序以创建公钥/私钥对。选用ed25519算法以获得更好的安全性与性能。PS C:\> ssh-keygen -t ed25519 -
确认密钥存储路径与密码: 程序将提示指定文件保存路径及设置密码 (passphrase)。为实现无密码登录,所有提示均采用默认值(直接按
Enter键)。- File path:
C:\Users\YourUsername\.ssh\id_ed25519(默认) - Passphrase: (留空)
- Passphrase confirmation: (留空)
- File path:
-
验证密钥生成: 命令执行成功后,会在指定的路径下生成两个文件:
id_ed25519: 私钥文件。此文件必须严格保密。id_ed25519.pub: 公钥文件。此文件将被部署到目标服务器。
第二阶段:在 Linux 服务器上部署公钥
-
在客户端读取并复制公钥: 使用 PowerShell 读取公-钥文件内容,并将其复制到系统剪贴板。
PS C:\> Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | Set-Clipboard -
通过密码认证连接到服务器: 建立一个临时的、基于密码的 SSH 会话,以便对服务器进行配置。
PS C:\> ssh root@192.168.74.131在提示时输入
root用户的当前密码。 -
在服务器端安装公钥: 登录服务器后,执行以下命令序列。
a. 确保
.ssh目录存在:mkdir -p ~/.ssh该命令会创建~/.ssh目录,如果目录已存在则不执行任何操作。b. 将公钥追加到认证文件: 将剪贴板中的公钥内容追加到
~/.ssh/authorized_keys文件中。root@debian:~# echo '在此处粘贴剪贴板中的公钥内容' >> ~/.ssh/authorized_keys注:
' '单引号内的内容应被替换为上一步复制的、以ssh-ed25519开头的完整公钥字符串。 -
设置严格的文件权限: 为满足 SSH 服务的安全要求,必须为
.ssh目录及authorized_keys文件设置正确的访问权限。权限过于开放会导致公钥认证失败。root@debian:~# chmod 700 ~/.ssh root@debian:~# chmod 600 ~/.ssh/authorized_keyschmod 700 ~/.ssh: 仅允许属主用户对该目录进行读、写、执行操作。chmod 600 ~/.ssh/authorized_keys: 仅允许属主用户对该文件进行读、写操作。
-
断开连接: 完成服务器端配置后,退出当前 SSH 会话。
root@debian:~# exit
第三阶段:验证公钥认证
-
从客户端发起新的连接: 在 Windows PowerShell 中,再次执行 SSH 连接命令。
PS C:\> ssh root@192.168.74.131 -
确认结果: 系统应不再提示输入密码,而是直接完成认证并显示服务器的命令行提示符。这表明公钥认证已成功配置。
通过以上步骤,成功实现了从指定的 Windows 客户端到 Linux 服务器的基于公钥的 SSH 无密码登录,提升了操作便捷性与安全性。