使用带有密码保护的 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 远程开发的主要内容,如果未能解决你的问题,请参考以下文章
gitlab ssh-key 不生效问题,ssh push需要密码