VSCode不像Jetbrains系列那样可以对远程SSH会话保存密码,重载窗口(例如安装/卸载插件)或是意外断开重新连接,VSCode都会弹出prompt窗口要求输入SSH密码,对于长期生产环境开发非常麻烦,但VSCode并不支持保存密码,因此我们需要利用SSH的密钥认证方式来实现免密码登录。

在主机上生成SSH Key

主机指你运行VSCode敲代码的那台机器。

理论上适用于Windows/Linux/macOS任何系统。

打开终端,输入ssh-keygen回车:

第一次会询问密钥文件的保存位置(需要填写完整路径),建议手动指定,否则会覆盖之前生成过的密钥。

passphrase可以留空(回车两次),如果填写将生成额外的密码保护。

Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\Patrick/.ssh/id_rsa): C:\Users\Patrick\.ssh\jetson_key
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in jetson.
Your public key has been saved in jetson.pub.
The key fingerprint is:
SHA256:c6byjFxxRxxxxxxxxxxxxxTM5Z9aM patrick@Patrick-Laptop
The key's randomart image is:
+---[RSA 4096]----+
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
+----[SHA256]-----+

看到这样的输出就代表SSH密钥已生成好,找到之前填写的输出路径(如果没填写则是默认覆盖%USERPROFILE%/.ssh/id_rsa

添加Key到远程主机

如果你运行Linux/macOS,那么应该可以直接使用ssh-copy-id

ssh-copy-id username@ip -i /path/to/your/key
# username 为用户名,ip为登陆地址,-i后面跟着你生成的key(如果之前生成没有指定路径可以不填-i,将上传默认key)

如果你使用的是Windows,那么通常不支持此命令,需要手动添加公钥。

登录到远程主机,编辑authorized_keys文件:

nano ~/.ssh/authorized_keys

打开你之前生成的pub文件,复制其中的内容到authorized_keys中,保存即可。

更改主机上的SSH Config

默认情况下,VSCode将SSH配置保存在%USERPROFILE%/.ssh/config,如果你之前更改过,那么可能不是在此路径。

打开此配置文件,确认是你想要免密登录的主机,在后面添加一行IdentityFile

如果你没有手动指定key输出路径,那么就直接填写~/.ssh/id_rsa

重启VSCode工作区

接下来,关闭VSCode再重新打开工作区,就会发现已经自动登陆上了,不再需要输入密码。