VSCode 使用带有密码保护的 ssh-key 的 ssh 进行远程开发

VSCode remote developement using ssh with passphrase protected ssh-key

我有一个远程 ssh 服务器,我想在上面进行远程开发。
我的 public 密钥已添加到服务器上的授权密钥中,我的私钥受密码保护。

我使用 ssh user@host -i ~/.ssh/key

按照 here 所述添加了远程主机

但是每当我尝试在远程主机上打开一个新的 VSCode window 时,它都会失败,我在日志中看到连接超时,这是预料之中的,因为我没有得到询问我的私钥密码。

我阅读了 this post 关于使用 ssh 进行远程开发的文章,并且我在 google 上进行了搜索,但找不到任何关于我可以对 enable/enter ssh 做什么的提示-连接到远程主机时的密钥密码。

我知道我可以使用不受密码保护的密钥连接到远程主机,但我不是要求这样做,我想知道是否可以使用 VSCode 连接到远程主机受密码保护的密钥。

如果您的密钥不是默认密钥,则意味着您需要一个 ~/.ssh/config 条目,您可以在其中指定 SSH 连接参数:

Host myserver
  Hostname host
  User user
  IdentityFile ~/.ssh/key

Visual Studio Code Remote Development 会自动读取配置文件,当你要求打开 SSH 会话时,你会看到“myserver”条目:如果你 select 它,打开的 SSH 会话将使用 ~/.ssh/key,正确的私钥。

然后,只要你的ssh-agent is enabled,并且你至少输入过一次你的密码(通过手动ssh myserver),VSCode将使用相同的代理来获取需要时输入密码。

这就是为我解决的问题,您的问题可能有所不同。

  1. 在VScode中选择命令:Remote-SSH: Open SSH Configuration File...
  2. 选择提供给您的位置(或创建一个配置文件 不带扩展名 到所需位置),例如: C:\Users\[USER_NAME]\.ssh\config。确保您拥有适当的权限。
  3. 准备你的配置文件,例如
Host Custom_Name
  HostName example.server.com
  User your_user_name
  IdentityFile C:\Users\[USER_NAME]\Documents\MobaXterm\home\.ssh\id_rsa
  (or wherever you have the private key)
  1. 最后将自定义路径添加到您的配置文件。这是我长久以来所缺少的
{
// add custom configuration file path
"remote.SSH.configFile": "C:\Users\[USER_NAME]\.ssh\config",

// Other settings

// omit comma after *config"* if that is your last setting
}

现在它应该要求输入密码而不是密码。

P.S。这里有很多关于设置的有用信息,尤其是我为简洁起见省略的键。