在 Win11 PowerShell 中通过 SSH 密钥实现无密码访问 Linux 服务器
要在 Win11 PowerShell 中配置无密码访问 Linux 服务器,核心是通过 SSH 密钥认证 实现(替代密码登录),无需安装额外工具(Win11 自带 OpenSSH 客户端)。以下是完整步骤:
前提条件
- Linux 服务器已开启 SSH 服务(默认端口 22,需确保防火墙放行 22 端口)。
- Win11 已启用 OpenSSH 客户端:
- 打开「设置」→「应用」→「可选功能」→ 查看是否有 OpenSSH 客户端,无则点击「添加功能」安装。
步骤 1:在 Win11 PowerShell 生成 SSH 密钥对
- 以管理员身份打开 PowerShell(右键开始菜单 → 选择 Windows PowerShell (管理员))。
-t rsa:指定密钥类型为 RSA-b 4096:密钥长度,安全性更高
- 命令执行后会出现 3 次提示,全部按回车默认配置:
- 提示 1:
Enter file in which to save the key→ 密钥保存路径(默认C:\Users\<用户名>\.ssh\id_rsa) - 提示 2:
Enter passphrase→ 密钥密码(留空 = 无密码,直接回车) - 提示 3:
Enter same passphrase again→ 再次确认密码(留空直接回车)
- 提示 1:
- 生成成功后,
C:\Users\<用户名>\.ssh\目录下会有 2 个文件:id_rsa:私钥(本地保存,绝对不能泄露)id_rsa.pub:公钥(需要上传到 Linux 服务器)
执行密钥生成命令:
ssh-keygen -t rsa -b 4096
步骤 2:将公钥上传到 Linux 服务器
推荐 2 种方法,优先用方法 1(更便捷)。
方法 1:用 ssh-copy-id 自动上传(推荐)
- 示例:
ssh-copy-id -i C:\Users\<用户名>\.ssh\id_rsa.pub [email protected]
首次执行会提示确认服务器指纹,输入 yes 回车,然后输入 Linux 服务器的密码,回车后公钥会自动上传到 Linux 服务器的 ~/.ssh/authorized_keys 文件中。
在 PowerShell 中执行以下命令,替换为你的 Linux 服务器信息:
ssh-copy-id -i C:\Users\<用户名>\.ssh\id_rsa.pub <linux 用户名>@<Linux 服务器 IP>
方法 2:手动复制公钥(备用,适用于 ssh-copy-id 不可用场景)
- 在 Win11 中打开
C:\Users\<用户名>\.ssh\id_rsa.pub文件,全选复制所有内容。
登录 Linux 服务器(用密码登录),执行以下命令:

