如何使用vscode 在远程服务器上直接写代码
准备工作 配置SSH密钥
这里以CentOS为例
配置SSH密钥登录CentOS
生成密钥对
进入当前用户目录,一般root用户只需要这样即可
cd ~
创建.ssh目录并设置权限
mkdir -p .ssh
chmod 700 .ssh
进入 .ssh 目录和生成密钥对
cd .ssh
ssh-keygen
然后,一路回车即可
密钥文件按照默认方式,在主目录/root下的隐藏目录.ssh中生成,分别为id_rsa和id_rsa.pub,其中
id_rsa:是你的私钥,你应该保存到你的【可信任的设备】上并在服务器上删除该文件
id_rsa.pub:是你的公钥,保存在服务器上
接着生成密钥认证文件
touch authorized_keys
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
至此,你的第一部分已经完成了,你所做的需要将你的密钥文件id_rsa妥善保存在你的本地电脑,并将服务器上生成的密钥文件id_rsa删除
修改SSH配置
使用root登录修改配置文件:/etc/ssh/sshd_config
vi /etc/ssh/sshd_config
将下面的内容的前面的 # 去掉
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
然后,修改下面的内容的 yes 为 no
PasswordAuthentication yes
最后修改后效果为
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
···
PasswordAuthentication no
最后重启SSH服务
CentOS 6.x:
service sshd restart
CentOS 7.x:
systemctl restart sshd
以上就是前置的全部工作了
正文开始
安装 remote ssh 插件
接下来我们就继续打开插件商店,搜索栏输入 remote ssh:

还是选择第一个,然后安装。 安装完之后,左侧板导航栏就多了一个远程连接的图标,点进去

点击设置项目

选择系统中存放 .ssh 的目录:

选择完之后,他就会初始化这个目录下的 config 文件中的配置。这边有两个是我之前用来拉取内部库和线上 github 的配置, 并没有远程服务器的配置。
配置并连接到远程服务器
接下来我在这个 config 文件上,添加我要远程连接的服务器的配置项,包括用户和对应的key文件, 格式如下:
Host 192.168.13.156
HostName 192.168.13.156
User kbz
IdentityFile C:/Users/admin/.ssh/id_rsa_airdroid_server
- Host 这个可以自己取,反正就是左边侧边栏显示的名称
- HostName 远程服务器 ip
- User 远程登录账号
- IdentityFile 远程ssh校验 rsa 文件

添加完之后,ctrl + s 保存,左边的 target 会同步更新。 接下来点击这个,直接连接到这台服务器:

这时候会弹出另外一个窗口,连上之后,就点击左边栏的文件图标,然后点击打开文件夹。

这时候会让你选择要打开的目录,直接用默认的用户目录即可。

连接上之后,就跟 IDE 一样,左边是远程服务端的目标目录的目录结构, 右边是编辑代码的框。

我们打开一个文件,然后直接编辑。 完了之后, ctrl + s, 直接保存:

而且还可以跟其他的 IDE 一样,在下面,打开 终端端口, 查看 - 终端, 这时候下面就可以看到终端了,就跟 xshell 4 一样,直接输入命令就可以交互了。

如果在终端下进行文件增加和删除,左边的目录栏会实时更新。如果对右边编辑栏中的文件内容进行修改。右边编辑栏的文件内容也会实时更新。而且关掉之后,在左边 target 那边是有记录的,下次直接点击这个服务器下的文件夹,就直接连接到这台服务器,并打开对应的目录了。

后面如果还连接其他的远程服务器,只需要在 .ssh/config 文件中,直接补上这一台服务器的 ssh 登录的相关信息即可。
总结
这样子必要时刻就可以在远程服务器上直接编辑文件写代码了。除了调试代码方便之外,有些针对一些软件的非常长的配置文件,编辑的时候,也会比用 vim 好用非常多。
转至:https://kebingzao.com/2020/02/26/vscode-remote-ssh/