ssh keys windows

老刘

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 登录时,系统会验证你电脑里的私钥是否能和目标设备上的公钥匹配。匹配成功,就能登录,不需要每次输入账户密码。

它的好处很明显

  1. 更安全
    密码容易被爆破、撞库、钓鱼,SSH Key 的安全性更高。

  2. 更方便
    配好之后,登录服务器、拉取代码、执行远程命令都更省事。

  3. 更适合自动化 例如脚本部署、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:

  1. 打开 GitHub
  2. 进入 Settings
  3. 找到 SSH and GPG keys
  4. 点击 New SSH key
  5. 把公钥粘贴进去
  6. 保存

设置完成后,就可以用 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_ed25519
  • server_ed25519
  • nas_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,忘了用户名。
比如:

  • root
  • ubuntu
  • admin
  • ec2-user

用户名错了,就算 Key 对也登不上。


九、Windows SSH Key 文件的存放位置

默认路径通常在:

C:\Users\你的用户名\.ssh\

这里面可能有:

  • id_ed25519
  • id_ed25519.pub
  • known_hosts
  • config

说明一下这些文件的作用

  • 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_ed25519
  • id_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,本质上就是三件事:

  1. 在本机生成一对密钥
  2. 把公钥放到目标服务器或平台
  3. 用 SSH 测试是否生效

只要理解了私钥和公钥的关系,再配合 Windows 自带的 OpenSSH,整个过程其实非常顺手。对于日常登录 Linux 服务器、远程管理 NAS、连接 GitHub/GitLab 来说,SSH Key 几乎是必备技能。掌握它之后,后续做远程运维、自动化部署、代码管理都会轻松很多。

文章版权声明:文章内容均来源于各大短视频平台搜集以及修改和删减新增,如有侵权或者违规,请联系站长进行删除,如需转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
验证码
评论列表 (暂无评论,2人围观)

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

目录[+]