使用 VSCode 连接远程服务器,可以直接编辑服务器上的文件,避免了使用 Vim 或 Nano等传统基于命令行的编辑工具。同时,由于VSCode是直接在服务器上运行相关代码,有效避免了由于本地环境与服务端环境的不同而导致的兼容性问题。

安装插件

打开 VSCode 并进入插件中心,在搜索框中搜索 ssh,找到 Remote-SSH 插件,点击安装。

install-remote-ssh

配置插件

安装完成后会出现一个远程资源管理器的图标,点击该图标并进入面板。

remote-ssh-pannel

此时有两种方式连接服务器,我们可以使用交互式菜单或直接修改配置文件。

修改配置文件

点击 SSH 字样右侧的小齿轮,选择需要编辑的配置文件,默认回车即可。

remote-ssh-pannel-config-icon

填入下列配置文件模板:

Host router
  HostName 192.168.1.1
  User root

Host 后跟服务器名称,可以是任何可以易于辨识的名称,HostName 后填入服务器的 IP 地址,User 后填入需要连接的用户名,若不指定具体端口,默认为22号端口。

若需要更改 SSH 连接端口,则需要新增一行指定端口号,如下:

Host router
  HostName 192.168.1.1
  User root
  Port 234

保存后左侧会出现对应服务器名称。(可能需要刷新)将鼠标移动至服务器名称上,点击 -> 小箭头连接服务器。

remote-ssh-pannel-connect-1

使用交互式菜单

点击 SSH 字样右侧的 + 号,VSCode 会要求输入SSH连接命令。

remote-ssh-pannel-new-remote

使用如下 SSH 连接命令模板:

ssh <username>@<host>

\<username\> 为连接使用的用户名(如root),@后跟需要连接的服务器 IP 地址(如192.168.1.1)。若需要指定端口号,则需要添加 -p 参数,如下:

ssh -p <port> <username>@<host>

remote-ssh-pannel-connection-command

需要更新的配置文件选择默认即可。

remote-ssh-pannel-config-file-update

右下角会弹出“已添加主机”字样,点击连接。

remote-ssh-pannel-connect-2

连接服务器

首次连接服务器可能会让你选择服务器系统,选择服务器对应系统。

接着输入服务器密码。

remote-ssh-pannel-connect-enter-pwd

成功连接服务器后,可在 VSCode 最上方的菜单栏中找到 终端->新建终端打开命令行。

remote-ssh-pannel-server-terminal

我们还可以打开项目所在的文件夹,方便开发。此时可能需要重新输入服务器的密码。

remote-ssh-opened-repo

无密码连接

无密码连接可分为两种,一种为该用户真的没有密码,可直接连接,另一种是用密钥对替代密码登陆。第一种方式仅限内网测试使用,在公网上不使用密码是极其不安全的,因此这里不做具体演示。这里演示第二种,使用密钥对连接服务器。

若你的计算机还没有密钥对,使用下方命令生成一组 (所有选项默认即可):

ssh-keygen

默认情况下,会生成两个文件:

  • id-rsa
  • id-rsa.pub
id-rsa 是你的私钥, id-rsa.pub 是你的公钥请勿将私钥上传到其他地方,将会导致严重的安全风险。

若你使用的是Linux或macOS,可以使用下面命令自动将公钥复制到服务器上的 authorized_keys 文件中。

ssh-copy-id <username>@<host>

当然你也可以手动复制 id-rsa.pub 文件,该文件在 Linux/MaxOS 系统默认存储在 ~/.ssh/id-rsa.pub

cat ~/.ssh/id-rsa.pub

若你使用的是 Windows,则必须手动复制 id-rsa.pub 文件内容至服务器上的 authorized_keys 中,该文件在 Windows 系统默认存储在C:\Users\your_username\.ssh\id-rsa.pub

pubKey-copy-to-remote

至此,VSCode 连接远程服务器应该无需再输入密码。

若此时还要求输入密码,则上述操作存在问题。你需要检查公钥是否已经存储在服务器上的 authorized_keys 文件中。同时还可以将私钥的路径写在配置文件中,查阅官方文档

Host router
    User root
    HostName 192.168.1.1
    IdentityFile ~/.ssh/id_rsa

通过 Socks5 代理连接

有时我们需要 Socks5 代理连接以加快访问速度或处于内网的服务器。请参考如下配置:

  • 需要将 127.0.0.1:1080 修改为你的 Socks 5 代理服务器。

Linux / macOS:

Host router
  HostName 192.168.1.1
    ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p
  User root
  Port 234

Windows:

Host router
  HostName 192.168.1.1
  User root
  Port 234
  ProxyCommand C:\Program Files\Git\mingw64\bin\connect.exe -S 127.0.0.1:1080 %h %p