VSCode 连接服务器依赖本地系统的 SSH 配置,最稳妥的做法是先在终端完成密钥免密登录测试,再通过 Remote - SSH 扩展连接。
先说结论:配置本质是标准 SSH 公钥认证,VSCode 只是调用本地 SSH 客户端,无需在软件内单独生成密钥。
- 适合:需要频繁在本地编辑器与远程环境之间切换文件的开发场景
- 先准备:确保本地已生成 SSH 密钥对,且服务器开放了 22 端口并允许公钥认证
- 验收:在系统终端能免密登录,且 VSCode 连接时不弹出密码输入框
命令速用版
如果你熟悉命令行,可以直接执行以下三条命令完成核心配置:
# 1. 生成密钥(一路回车即可)
ssh-keygen -t ed25519 -C "your_email@example.com"
# 2. 上传公钥到服务器(需输入一次密码)
ssh-copy-id user@your_server_ip
# 3. 测试免密登录
ssh user@your_server_ip确认终端能免密登录后,在 VSCode 中按 F1,输入 Remote-SSH: Connect to Host 选择对应主机即可。
为什么会这样
VSCode 的 Remote - SSH 功能并不是自己实现了一套连接协议,而是封装调用了你操作系统自带的 ssh 命令。公开资料中没有看到可靠的量化数据表明 VSCode 内部有独立的密钥存储机制,它默认读取本地 ~/.ssh 目录下的配置和密钥。因此,只要你的系统终端能免密登录,VSCode 理论上就能免密连接。
分步处理
第一步:生成本地密钥对
打开本地终端(Windows 可用 PowerShell 或 Git Bash),输入 ssh-keygen -t ed25519。Ed25519 是目前推荐的安全算法,比传统的 RSA 更短更安全。生成过程中提示输入 passphrase 时,如果想完全免密,可以直接回车留空。
第二步:将公钥上传至服务器
使用 ssh-copy-id user@host 命令是最快的方法。如果没有该命令(如 Windows 默认环境),可以手动将本地 ~/.ssh/id_ed25519.pub 的内容复制到服务器的 ~/.ssh/authorized_keys 文件末尾。
第三步:检查服务器权限
登录服务器,确保 ~/.ssh 目录权限为 700,authorized_keys 文件权限为 600。权限过开放会导致 SSH 服务拒绝读取密钥,这是最常见的失败原因。
第四步:VSCode 连接配置
安装 Microsoft 官方的 Remote - SSH 扩展。点击左下角绿色图标,选择 Connect to Host。如果之前终端测试过,这里会自动识别主机名。如果需要指定密钥文件,可在本地 ~/.ssh/config 文件中添加 IdentityFile 配置。
怎么验证是否生效
最直接的验证是在 VSCode 连接过程中观察底部状态栏。如果连接时没有弹出密码输入框,且左下角显示远程主机名,说明配置成功。也可以在本地终端使用 ssh -v user@host 查看调试日志,确认认证方法为 publickey 且状态为 success。
常见坑
- 密钥权限错误:本地私钥文件权限必须是 600,否则 SSH 客户端会警告并忽略该密钥。
- 服务器配置限制:部分云服务器默认关闭了公钥认证,需检查服务器 /etc/ssh/sshd_config 中 PubkeyAuthentication 是否为 yes。
- 多密钥冲突:如果 ~/.ssh 下有多个密钥,SSH 可能尝试了错误的密钥。建议在 config 文件中明确指定 Host 对应的 IdentityFile。
- Windows 路径问题:在 Windows 上使用 VSCode 时,确保使用的 SSH 客户端路径正确,有时 Git Bash 的 ssh 和 Windows 自带的 ssh 行为不一致。