通过密钥对配置重装系统后,重新建立 VS Code 与云服务器的 SSH 连接。【后端开发遇到的那点事儿】
·
前情提要
本地 Windows 已经保存了云服务器原来的 SSH 私钥。
重装云服务器 Linux 系统时,重新选择了原来的密钥对;同时删除了 VS Code Remote-SSH 配置文件:
C:\Users\20720\.ssh\config中的全部内容。
因此需要重新建立 VS Code 与云服务器的 SSH 连接。

解决流程
按下面步骤操作:
1. 重装服务器时重新绑定原来的密钥对
云服务器重装时,选择之前使用的同一密钥对。
原因: 重装系统后,服务器中的 SSH 公钥授权通常会重新生成/配置。重新绑定原密钥对后,服务器会重新保存与 Windows 本机私钥相匹配的登录公钥,从而允许该私钥登录。
2. Windows PowerShell 删除旧服务器 Host Key
执行:
ssh-keygen -R 服务器IP
原因: 服务器重装后,服务器自己的 SSH Host Key 通常会重新生成,而 Windows 的:
C:\Users\20720\.ssh\私钥
仍保存着重装前的服务器指纹,因此需要删除旧记录。
这里的 Host Key 是服务器用于证明自己身份的密钥,与用于登录服务器的“本机私钥 + 服务器 authorized_keys 中的公钥”不是同一个东西。
3. 使用原私钥测试 SSH 登录
在本地win的 PowerShell 执行:
ssh -i C:\Users\20720\.ssh\私钥文件名 root@服务器IP
第一次连接新系统时,如果出现:
Are you sure you want to continue connecting?
输入:
yes
如果能够成功登录,说明以下部分都正常:
服务器 SSH 服务 ✅
服务器登录公钥 ✅
Windows 本机私钥 ✅
root 公钥登录 ✅
4. 在 VS Code 中重新添加服务器
执行:
Ctrl + Shift + P
→ Remote-SSH: Add New SSH Host...
输入:
ssh root@服务器IP
然后选择配置文件:
C:\Users\20720\.ssh\config
VS Code 会自动生成类似:
Host 服务器IP
HostName 服务器IP
User root
但此时可能仍然出现:
Permission denied (publickey)
原因: VS Code 此时知道服务器 IP 和用户名,但不一定知道应该使用 Windows 中的哪一个私钥。
5. 在 config 中指定私钥
在对应服务器配置下面增加:
IdentityFile C:/Users/20720/.ssh/私钥文件名
最终最简配置为:
Host 服务器IP
HostName 服务器IP
User root
IdentityFile C:/Users/20720/.ssh/私钥文件名
然后回到 VS Code:
Ctrl + Shift + P
→ Remote-SSH: Connect to Host...
→ 选择:服务器IP
即可连接。
核心原理
服务器重装
→ 重新绑定原密钥对
→ 让新系统重新认可本机私钥对应的登录公钥
服务器重装后 Host Key 改变
→ ssh-keygen -R 服务器IP
→ 删除 Windows 保存的旧服务器指纹
PowerShell 使用 -i 可以手动指定私钥
→ VS Code 没有手动写 -i
→ 在 config 中使用 IdentityFile 指定私钥
一句话总结:
重新绑定原密钥对解决“服务器认不认识你的私钥”;
ssh-keygen -R解决“本机认不认识重装后的服务器”;IdentityFile解决“VS Code 到底应该使用哪一把私钥”。
更多推荐
所有评论(0)