VS Code 远程连接服务器免密登录
背景
在使用 VS Code 通过 Remote SSH 连接服务器时,每次操作都需要输入密码,效率较低。
通过配置 SSH 密钥登录,可以实现免密连接服务器,同时提升安全性与操作体验。
一、原理
SSH 免密登录基于非对称加密:
本地生成密钥对 → 公钥上传服务器 → 私钥本地保存 → 自动认证
二、本地生成密钥
在本地终端执行:
ssh-keygen -t ed25519 -C "yourname-hexo"
提示:
- 文件路径:直接回车(默认)
- passphrase:可留空(方便使用)
生成后会得到两个文件:
~/.ssh/id_ed25519 # 私钥(保密)
~/.ssh/id_ed25519.pub # 公钥(上传到服务器)
三、上传公钥到服务器
方法一(推荐)
在本地执行:
ssh-copy-id root@你的服务器IP
输入一次密码即可完成配置。
方法二(Windows 手动方式)
在 Windows CMD 中执行:
type %USERPROFILE%\.ssh\id_ed25519.pub
复制输出内容。
登录服务器后执行:
nano ~/.ssh/authorized_keys
将复制的公钥粘贴进去(必须为一整行)。
四、设置权限(必须)
在服务器执行:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
五、测试免密登录
在本地执行:
ssh root@你的服务器IP
如果无需输入密码即可登录,说明配置成功。
六、VS Code 配置
打开 VS Code:
Ctrl + Shift + P
选择:
Remote-SSH: Open SSH Configuration File
编辑:
~/.ssh/config
添加:
Host your-server
HostName 你的服务器IP
User root
IdentityFile ~/.ssh/id_ed25519
七、连接服务器
在 VS Code 中:
Remote-SSH: Connect to Host → your-server
即可免密连接服务器。
八、安全加固(建议)
编辑服务器 SSH 配置:
nano /etc/ssh/sshd_config
找到并修改:
PasswordAuthentication no
然后重启 SSH 服务:
systemctl restart ssh
⚠️ 注意:务必确认免密登录成功后再关闭密码登录。
九、常见问题
1. 仍然需要密码
检查:
ls -l ~/.ssh/authorized_keys
并确认权限:
chmod 600 ~/.ssh/authorized_keys
2. 公钥未生效
调试:
ssh -v root@服务器IP
查看是否出现:
Offering public key
3. Windows 无法使用 cat
替代命令:
type %USERPROFILE%\.ssh\id_ed25519.pub
或使用:
notepad %USERPROFILE%\.ssh\id_ed25519.pub
总结
免密登录 = 公钥上传服务器 + 私钥本地保存
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Kris' Blog!
