VSCode远程开发

一、配置免密远程登录服务器

ssh 公钥认证是一种方便、高安全性的身份验证方法,它将本地“私有”密钥与远程主机上与用户关联的“公共”密钥进行匹配,从而实现免密登录。

密钥对:在非对称加密技术中,有两种密钥,分为私钥和公钥,私钥是密钥对所有者持有,不可公布,公钥是密钥对持有者公布给他人的。

公钥:公钥用来给数据加密,用公钥加密的数据只能使用私钥解密

私钥:用来解密公钥加密的数据

简而言之,就是ssh远程连接的时候无需输入密码。

第一步,需要创建密钥对

1、生成密钥对

Win下可以安装git,或者OpenSSH,会带有ssh-keygen.exe,用于生成密钥对

Linux下应该环境自带

在已有生成密钥程序ssh-keygen.exe

首先,运行下述命令生成密钥对,将会以你的邮箱作为标签创建一个新的SSH密钥

1
ssh-keygen -t rsa -C "example@qq.com"

之后便会提示正在生成,并询问存储位置,直接回车选择保存到默认位置

1
2
Generating public/private rsa key pair.
Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]

在提示符下,输入安全密码,即可生成一个新的ssh密钥。这里的安全密码用于使用此密钥时需要输入此时的密码来解锁。(这里不解释为什么还需要设置一重密码)

直接回车为空

1
2
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

到这里就生成好了,会提示你生成的密钥对的位置,通常位于:

Win:C\Users\Name\.ssh

Linux:~/.ssh/

这里面有几个文件比较重要:

id_rsa:私钥【这个千万不能泄露】

id_rsa.pub:公钥

known_hosts:一些服务器的记录

authorized_keys:通常是服务器上的文件,记录客户端的公钥】

config:VSCode生成的配置文件(之后才有的)】

2、使用密钥对

注意,这里说的都是使用公钥

拷贝公钥到服务器实现免密登录

1
ssh-copy-id -i /mnt/c/Users/name/.ssh/id_rsa.pub -p 22 root@122.112.xxx.xxx

之后再尝试远程连接便会发现无需输入密码了。

当然,这里还有其他的用处,比如用到github

二、VSCode远程开发

VScode发布了远程编程与调试的插件Remote Development,使用这个插件可以在很多情况下代替vim直接远程修改与调试服务器上的代码,同时具备代码高亮与补全功能,就和在本地使用VScode一样。终于不用在服务器端翻来覆去的配置vim插件了。

其中的Remote ContainersRemote SSH都是非常Nice的。

1、下载插件

image-20220111220225815

下载安装即可,之后便会多出一个标签页

image-20220111220327965

2、配置插件

打开标签页,如下所示

image-20220111221515764

先点击 +号,新建一个连接,按照提示输入远程连接命令:ssh name@ip

之后会提示输入密码,登录。这样我们便连接上了服务器,可以看到用户目录了,与本地使用VScode一致。

那么怎么用上我们之前配置的公钥呢?

image-20220111221745781

点开加号旁边的设置按钮,会弹出config文件的列表,比如我们打开C盘底下的config文件

1
2
3
4
5
Host ServerName
HostName 10.xx.xx.xxx
User username
Port 22
IdentityFile C:\\Users\\name\\.ssh\\id_rsa

说明:

Host:服务器的一个别称

HostName:服务器ip

User:用户名

Port:服务器端口,默认22

IdentityFile:本机私钥位置

保存文件后,左边的SSH TARGETS列表中就会看到刚添加的服务器(指定的服务器别称)

image-20220111222623313

之后再连接服务器只需要在此页面免密连接服务器即可。

三、参考

SSH 公钥 私钥的理解 - 知乎 (zhihu.com)

VScode 的远程开发,体验后爽翻 - 知乎 (zhihu.com)