Skip to content

在 VSCode 中保存 SSH 密码

问题描述

使用 VSCode 连接到远程主机时,每次都需要输入 SSH 密码,这在频繁连接时非常不便。本文将介绍如何实现免密码 SSH 连接,提升开发效率。

重要提示

SSH 协议本身不支持直接保存密码,但可以通过 SSH 密钥对实现免密码认证,这是更安全且推荐的方式。

解决方案

方案一:SSH 密钥认证(推荐)

这是最安全且官方推荐的方法,通过生成 SSH 密钥对实现免密码连接。

步骤 1:生成 SSH 密钥

在本地终端执行以下命令:

bash
ssh-keygen -t ed25519 -b 4096

或者使用 RSA 算法:

bash
ssh-keygen -t rsa -b 4096

按提示操作,通常直接回车使用默认设置即可。

步骤 2:配置 SSH 配置文件

编辑 ~/.ssh/config 文件(Windows 在 C:\Users\用户名\.ssh\config):

ssh-config
Host myhost
  HostName 服务器IP或域名
  User 远程用户名
  Port 22
  PreferredAuthentications publickey
  IdentityFile "~/.ssh/密钥文件名"

步骤 3:复制公钥到远程主机

使用 ssh-copy-id 命令自动复制:

bash
ssh-copy-id -i ~/.ssh/公钥文件.pub 用户名@服务器地址

或者手动操作:

  1. 查看公钥内容:cat ~/.ssh/公钥文件.pub
  2. 登录远程主机,将公钥内容添加到 ~/.ssh/authorized_keys 文件末尾

步骤 4:设置文件权限

确保正确的文件权限:

bash
# 本地私钥权限
chmod 600 ~/.ssh/私钥文件

# 远程服务器权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

方案二:使用 SSH Agent 缓存密码

如果私钥有密码保护,可以使用 SSH Agent 缓存密码:

bash
# 启动 SSH Agent
eval "$(ssh-agent -s)"

# 添加私钥到 Agent
ssh-add ~/.ssh/私钥文件

注意事项

  • 此方法仅在当前会话有效,重启后需要重新添加
  • 不同操作系统启动 SSH Agent 的方式可能不同

方案三:使用 sshpass(不推荐)

对于不支持 SSH 密钥的特殊情况,可以使用 sshpass

bash
# 安装 sshpass
# Ubuntu/Debian
sudo apt-get install sshpass

# 使用 sshpass
sshpass -p '密码' ssh 用户名@服务器地址

安全警告

此方法将密码以明文形式存储,存在严重安全风险,仅作为最后手段使用。

配置 VSCode

确保 VSCode 的 Remote-SSH 扩展正确设置:

  1. 安装 Remote-SSH 扩展
  2. 在命令面板运行 "Remote-SSH: Connect to Host"
  3. 选择配置好的主机名称

故障排除

如果连接仍然需要密码,检查以下事项:

  1. 权限问题:确保本地私钥和远程 authorized_keys 文件权限正确
  2. 配置错误:检查 SSH 配置文件语法和路径
  3. 服务器设置:确认远程服务器允许公钥认证(PubkeyAuthentication yes

总结

虽然不能直接"保存 SSH 密码"到 VSCode,但通过 SSH 密钥认证可以实现更安全便捷的免密码连接。强烈推荐使用 SSH 密钥对方案,它不仅解决了重复输入密码的问题,还提供了更强的安全性保障。

最佳实践建议

  • 始终使用 SSH 密钥替代密码认证
  • 为不同服务使用不同密钥对
  • 定期更换密钥对增强安全性
  • 使用密码管理器安全地存储私钥密码

通过以上方法,您可以实现 VSCode 与远程服务器的无缝连接,提升开发工作效率。