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

Posted

技术标签:

【中文标题】使用带有密码保护的 ssh-key 的 ssh 进行 VSCode 远程开发【英文标题】:VSCode remote developement using ssh with passphrase protected ssh-key 【发布时间】:2021-03-14 18:14:56 【问题描述】:

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

我按照here 的描述添加了远程主机,使用ssh user@host -i ~/.ssh/key

但是,每当我尝试在远程主机上打开一个新的 VSCode 窗口时,它都会失败,并且我在日志中看到连接超时,这是意料之中的,因为我没有被要求输入我的私钥密码。

我阅读了this 关于使用 ssh 进行远程开发的帖子,并在 google 上进行了搜索,但没有找到任何提示,说明在连接到远程主机时我可以做些什么来启用/输入 ssh 密钥密码。

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

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

【参考方案2】:

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

    在VScode中,选择命令:Remote-SSH: Open SSH Configuration File... 选择提供给您的位置(或创建配置文件不带扩展名到所需位置),例如: C:\Users\[USER_NAME]\.ssh\config。确保您拥有适当的权限。 准备配置文件,例如
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)
    最后为您的配置文件添加自定义路径。这是我长期缺乏的东西

// 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

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

附:这里有很多有用的设置信息,尤其是我为了简洁而省略的键。

【讨论】:

以上是关于使用带有密码保护的 ssh-key 的 ssh 进行 VSCode 远程开发的主要内容,如果未能解决你的问题,请参考以下文章

如何在 vagrant 中使用 ssh-key 和密码?

gitlab ssh-key 不生效问题,ssh push需要密码

tortoisegit推送ssh-key需要输入用户信息

git添加ssh-key后免登陆未生效

中小企业最基本的实用的ssh-key秘钥方案之ssh免密码登陆实战  

中小企业最基本的实用的ssh-key秘钥方案之ssh免密码登陆实战