vscode 远程连接 linux 服务器

在很多编程语言专业的编辑器中,如个人已知的 pycharm 可以通过配置远程连接服务器,直接修改服务器上的文件。vscode 作为一个多语言的编辑器一直没有远程连接的功能。

现在 vscode 新增了一系列的插件可以对各种服务端进行远程连接(ssh,WSL等),本文只介绍通过 ssh 远程连接。

在客户端中配置 rsa 密钥

配置 rsa 密钥时需要 openssh ,一般情况下是默认已安装的,如果没有安装请自行搜索。在终端中输入以下命令来生成 rsa 密钥:

ssh-keygen -t rsa -b 4096
# -t 参数是指定密钥类型
# -b 参数是指定密钥长度(bit)

注意:以上命令会生成默认名称的密钥,如果客户端中已存在默认名称的密钥会进行覆盖,在执行命令后的第一个对话中是输入密钥名称,在这里输入自定义的名称(如果生成的位置与 .ssh 同级,请再执行一次此命令,并且密钥名称前添加 .ssh/

将公钥配置到服务端

通过 SFTP 将刚刚生成的公钥私钥文件都上传到服务端。在公钥文件的同级目录中执行以下命令:

ssh-copy-id -i xx.pub ip
# xx.pub  ip 请以实际情况替换

会出现以下执行信息:

The authenticity of host 'ip (ip)' can't be established.
ECDSA key fingerprint is SHA256:xxxxx.
ECDSA key fingerprint is MD5:xxxx.
Are you sure you want to continue connecting (yes/no)? yes    #在这里要输入 yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@ip's password:  #在这个要输入root密码

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'ip'"
and check to make sure that only the key(s) you wanted were added.

配置 vscode

在插件库中搜索 remote,找到 remote-ssh,点击下载,会自动下载其依赖插件。

下载完成后在左侧边栏中会出现一个类似电脑的图标,点击后左侧边栏就会出现相应的显示框,点击 CONNECTIONS 右方的设置图标,会出现一个选择框,这是选择密钥配置文件,这里选择 C:Users\Admimistrator\.ssh\config,这是系统默认的 ssh 配置文件:

Host $server_name
    HostName $ip
    User $user_name
    Port $port
    IdentityFile $rsa_file

# $server_name : 服务器名称,自定义
# $ip :服务器 ip
# $user_name :管理员账号
# $port :端口号,默认 22,可不添加,但是小编不填写则一直卡在转发端口阶段中
# $rsa_file :私钥文件绝对路径(与服务端中的公钥是一对)

保存后左侧边栏的 CONNECTIONS 下会出现刚刚配置的服务器链接,点击其后的图标连接服务器。

这时如果是第一次连接,在 vscode 的终端中会让你接受来自服务器的 rsa 密钥,输入 yes 接受,然后跳出一个新的 vscode 窗口,并且左下角是 opening remote ,表示正在连接。

当出现 SSH:xxx 时则说明连接成功。点击目录,点击打开文件夹就出现服务端的所有的文件,这时就可以在线编辑服务器中的文件了。

另一种麻烦的方法

直接在 config 文件中配置远程连接的服务器ip,管理员账号和端口,不使用 rsa 密钥,在请求连接时 vscode 的终端会让输入管理员的密码,输入后即可进入,进入后需要在新窗口的终端中再次输入管理员密码。

如果仅仅是临时登录一次服务器则可以使用这种方式。