Windows 下 SSH Keys 详解:生成、配置、免密登录与常见问题一次讲清
目标关键词:ssh keys windows
在 Windows 里使用 SSH Keys,最常见的需求就是:登录 Linux 服务器、GitHub/GitLab、NAS、远程设备时,不想每次都输入密码。SSH 密钥认证比传统密码登录更安全,也更适合长期维护服务器和开发环境。很多人第一次接触会觉得麻烦,其实只要把流程理顺,Windows 上配置起来并不复杂。
这篇文章就围绕 ssh keys windows 这个主题,从最基础的概念讲到实际操作,适合新手一步一步照着做,也能给进阶用户提供更稳妥的配置思路。
一、什么是 SSH Keys,为什么 Windows 用户也需要它
SSH Keys,简单说就是一对“钥匙”:
- 私钥(Private Key):保存在你自己的电脑上,必须妥善保管,不能泄露。
- 公钥(Public Key):可以发给服务器、Git 平台或 NAS,用来识别你的身份。
当你用 SSH 登录时,系统会验证你电脑里的私钥是否能和目标设备上的公钥匹配。匹配成功,就能登录,不需要每次输入账户密码。
它的好处很明显
-
更安全
密码容易被爆破、撞库、钓鱼,SSH Key 的安全性更高。 -
更方便
配好之后,登录服务器、拉取代码、执行远程命令都更省事。 -
更适合自动化 例如脚本部署、CI/CD、自动备份、远程运维,SSH Key 基本是标配。
二、Windows 上生成 SSH Key 的几种方式
Windows 现在生成 SSH Key 很方便,主流有三种方式:
- PowerShell / Windows Terminal
- Git Bash
- PuTTY 工具链
如果你是新手,最推荐用 Windows 自带的 OpenSSH,最省事;如果你常用 Git,也可以用 Git Bash。
三、Windows 自带 OpenSSH 生成 SSH Key 的方法
这是最标准、最通用的方法。
第一步:打开 PowerShell
在开始菜单里搜索:
- PowerShell
- 或 Windows Terminal
然后打开。
第二步:输入生成命令
常用的 RSA 或 Ed25519 都可以。现在更推荐 Ed25519,安全性和效率都更好。
ssh-keygen -t ed25519 -C "你的邮箱或备注"
比如:
ssh-keygen -t ed25519 -C "admin@example.com"
如果你的老系统、老设备不支持 Ed25519,也可以用 RSA:
ssh-keygen -t rsa -b 4096 -C "你的邮箱或备注"
第三步:选择保存路径
系统会提示:
Enter file in which to save the key
直接回车,默认路径一般是:
C:\Users\你的用户名\.ssh\id_ed25519
如果你想区分不同用途,也可以改成别的名字,比如:
C:\Users\你的用户名\.ssh\github_ed25519
第四步:设置密码
系统会问你是否给私钥设置密码(passphrase):
- 建议设置:更安全
- 不设置也能用:登录更方便
如果是个人电脑、日常使用,可以按需求选择。
如果是办公电脑、服务器运维用途,建议设置一个密码,更稳妥。
第五步:查看生成结果
生成后,通常会出现两个文件:
id_ed25519:私钥id_ed25519.pub:公钥
四、如何查看 Windows 上的 SSH 公钥
公钥就是要复制出去的那一份。
在 PowerShell 里输入:
type $env:USERPROFILE\.ssh\id_ed25519.pub
如果你用的是自定义文件名,比如 github_ed25519.pub,就改成:
type $env:USERPROFILE\.ssh\github_ed25519.pub
输出的一长串内容就是公钥,通常长这样:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI...... yourmail@example.com
注意
- .pub 结尾的是公钥,可以公开
- 没有 .pub 的是私钥,绝对不要发给别人
五、把公钥添加到服务器、Git 平台或 NAS
SSH Key 生成后,还需要把公钥加到目标设备里,才算完成配置。
1. 添加到 Linux 服务器
如果你能先用密码登录服务器,可以直接手动配置。
方法一:手动追加到 authorized_keys
在服务器上执行:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
把 Windows 上复制出来的公钥粘贴进去,保存后执行:
chmod 600 ~/.ssh/authorized_keys
方法二:一条命令复制
如果你本地有 ssh-copy-id,可以直接用,但 Windows 原生环境不一定默认带。
更通用的方法还是手动复制。
2. 添加到 GitHub
如果你是给 GitHub 配置 SSH Key:
- 打开 GitHub
- 进入 Settings
- 找到 SSH and GPG keys
- 点击 New SSH key
- 把公钥粘贴进去
- 保存
设置完成后,就可以用 SSH 地址拉代码,比如:
git clone git@github.com:用户名/仓库名.git
3. 添加到 GitLab / Gitee
流程类似:
- 进入账号设置
- 找到 SSH Keys
- 粘贴公钥
- 保存
4. 添加到 NAS
像群晖、威联通、部分软路由、Linux NAS,都支持 SSH 公钥登录。
一般做法是:
- 先用密码登录 NAS
- 打开 SSH 服务
- 把公钥写入对应用户的
~/.ssh/authorized_keys
有些 NAS 管理界面也支持直接导入公钥。
六、Windows 上如何测试 SSH Key 是否生效
配置完以后,最关键的一步就是测试。
测试连接服务器
例如:
ssh 用户名@服务器IP
比如:
ssh root@192.168.1.100
如果配置正常,系统会直接让你登录,或者只要求你输入私钥密码,而不是服务器账户密码。
测试 GitHub
可以执行:
ssh -T git@github.com
第一次连接可能会提示确认主机指纹,输入:
yes
如果成功,会看到类似提示:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
这说明 SSH Key 已经生效。
七、Windows 下多个 SSH Key 怎么管理
很多人会遇到这种情况:
- 一个 Key 给 GitHub
- 一个 Key 给公司服务器
- 一个 Key 给家里的 NAS
这时候就不能全都混在一起,要学会管理多个密钥。
方法一:给不同密钥起不同名字
例如:
github_ed25519server_ed25519nas_ed25519
对应公钥也分别生成。
方法二:配置 config 文件
在 Windows 里进入:
C:\Users\你的用户名\.ssh\
新建或编辑一个名为 config 的文件,没有扩展名。
写入内容如下:
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/github_ed25519
Host myserver
HostName 192.168.1.100
User root
IdentityFile ~/.ssh/server_ed25519
Host mynas
HostName 192.168.1.200
User admin
IdentityFile ~/.ssh/nas_ed25519
这样写的好处
以后连接时可以直接用别名:
ssh myserver
ssh mynas
不用每次都输入完整 IP 和密钥路径。
八、Windows 连接 SSH 时提示“Permission denied”的常见原因
这是最常见的问题之一。别急,通常不是坏了,而是以下几个地方出错了。
1. 公钥没放对地方
服务器上要放在对应用户目录下的:
~/.ssh/authorized_keys
不是随便放一个文件就行。
2. 权限不对
Linux 服务器对 SSH 权限比较严格,常见要求:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
权限不对,SSH 可能直接拒绝。
3. 用错了私钥
如果你有多个 Key,可能连接时默认用了别的私钥。
这时要检查 config 文件里的 IdentityFile 路径是否正确。
4. 服务器禁止了公钥认证
检查服务器的 /etc/ssh/sshd_config,确认有这些配置:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
改完后记得重启 SSH 服务:
sudo systemctl restart sshd
或:
sudo systemctl restart ssh
5. 用户名不对
很多人只记住 IP,忘了用户名。
比如:
rootubuntuadminec2-user
用户名错了,就算 Key 对也登不上。
九、Windows SSH Key 文件的存放位置
默认路径通常在:
C:\Users\你的用户名\.ssh\
这里面可能有:
id_ed25519id_ed25519.pubknown_hostsconfig
说明一下这些文件的作用
- id_ed25519:私钥
- id_ed25519.pub:公钥
- known_hosts:保存你连接过的服务器指纹,防止中间人攻击
- config:SSH 配置文件
十、Windows 里如何把 SSH Key 复制到远程主机
有些用户想用命令直接把公钥传过去,在 Windows 里可以这样做。
方法一:手动复制粘贴
最简单,适合新手。
方法二:用命令查看后复制
type $env:USERPROFILE\.ssh\id_ed25519.pub
然后复制整行,粘贴到服务器的 authorized_keys。
方法三:PowerShell 读取并传输
如果你熟悉脚本,也可以通过 PowerShell 处理,但对大多数普通用户来说,手动方式更稳。
十一、Windows SSH Keys 使用中的安全建议
SSH Key 很好用,但私钥一旦泄露,风险也不小。下面这些习惯很重要。
1. 私钥不要上传到网盘、聊天工具、代码仓库
尤其不要把以下文件发出去:
id_ed25519id_rsa
2. 公钥可以公开,私钥不能公开
记住这个原则就行。
3. 私钥建议设置密码
尤其是笔记本电脑、公司电脑、多人共用设备,更要加密。
4. 备份私钥要谨慎
如果换电脑,最好通过安全方式备份私钥,不要明文乱传。
5. 删除不用的旧 Key
一些人电脑里有很多年前的旧密钥,建议定期清理。
十二、Windows 下 SSH Agent 的作用
如果你给私钥设置了密码,每次连接都输一遍会很烦。
这时可以用 ssh-agent 来缓存密钥。
检查服务是否开启
在 PowerShell 里输入:
Get-Service ssh-agent
如果没运行,可以开启:
Start-Service ssh-agent
设置开机启动:
Set-Service -Name ssh-agent -StartupType Automatic
添加私钥到 agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519
添加后,这个会话期间连接服务器就更方便。
十三、Git 用户在 Windows 上配置 SSH Key 的实用建议
如果你主要是为了 Git 配置 SSH Key,建议这样做:
1. 使用 Ed25519
更现代,也更推荐。
2. 单独给 GitHub / GitLab / Gitee 分别配置
不要所有平台共用一个密钥,管理起来更清晰。
3. config 文件提前写好
例如:
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/github_ed25519
4. 测试后再改仓库地址
仓库克隆地址从 HTTPS 改成 SSH,例如:
git remote set-url origin git@github.com:用户名/仓库名.git
十四、Windows 11 / Windows 10 常见差异
Windows 10 和 Windows 11 在 SSH Key 使用上差别不大,核心都是 OpenSSH。
但有几点值得注意:
- Windows 11 自带 Terminal 更顺手
- 新版 Windows 通常自带 OpenSSH 客户端
- 旧版 Windows 10 可能需要手动安装 OpenSSH 功能
如果系统里没有 ssh 命令,可以去:
设置 → 应用 → 可选功能 → 添加可选功能 → OpenSSH Client
安装后就能使用。
十五、常见问题汇总
问题 1:执行 ssh-keygen 提示找不到命令
说明系统没有安装 SSH 客户端,或者环境变量有问题。
解决办法:
- 安装 OpenSSH Client
- 或使用 Git Bash 中的
ssh-keygen
问题 2:登录时还是要输密码
通常是下面几种原因:
- 公钥没添加成功
- 配错了用户名
- 没用到正确的私钥
- 服务器未开启公钥认证
问题 3:Git 还是走 HTTPS
说明远程仓库地址还没改成 SSH 地址。
用:
git remote -v
检查后再修改。
问题 4:连接时提示主机真实性无法验证
这是首次连接远程主机时的正常提示。
如果确认 IP 没错,可以输入:
yes
系统会把主机指纹写入 known_hosts。
十六、适合新手的完整操作流程
如果你是第一次在 Windows 上配置 SSH Keys,可以按这个顺序走:
步骤 1:打开 PowerShell
步骤 2:生成密钥
ssh-keygen -t ed25519 -C "你的邮箱"
步骤 3:一路回车,生成到默认目录
步骤 4:查看公钥
type $env:USERPROFILE\.ssh\id_ed25519.pub
步骤 5:复制公钥到服务器 / Git 平台
步骤 6:测试登录
ssh 用户名@服务器IP
或者:
ssh -T git@github.com
步骤 7:如果有多个密钥,写 config 文件
步骤 8:有密码的私钥可配合 ssh-agent 使用
十七、实战建议:怎么选最合适的 SSH Key
如果你不知道怎么选,可以直接参考下面这个思路:
普通用户
- 直接用 Ed25519
- 默认路径保存
- 私钥建议加密码
- 只给常用平台配置
经常管理服务器的用户
- 不同服务器用不同 key
- 配置
config - 开启
ssh-agent - 定期检查
authorized_keys
开发者
- Git 平台单独密钥
- 服务器单独密钥
- 本地保留备份
- 不要把私钥写进脚本或仓库
十八、总结
在 Windows 上配置 ssh keys windows,本质上就是三件事:
- 在本机生成一对密钥
- 把公钥放到目标服务器或平台
- 用 SSH 测试是否生效
只要理解了私钥和公钥的关系,再配合 Windows 自带的 OpenSSH,整个过程其实非常顺手。对于日常登录 Linux 服务器、远程管理 NAS、连接 GitHub/GitLab 来说,SSH Key 几乎是必备技能。掌握它之后,后续做远程运维、自动化部署、代码管理都会轻松很多。

还没有评论,来说两句吧...