使用VSCode插件Remote-SSH连接服务器

方法简介

VSCode提供了两种连接服务器的方法,分别使用Remote - SSHRemote - Tunnels插件。本文介绍使用Remote - SSH连接服务器。需要注意,使用Remote - SSH外网客户端访问内网服务器需要中转机作为跳转,此处不再介绍如何设置中转机。若无中转机,可以使用Remote - Tunnels连接服务器,使用方法可参考VSCode使用插件Remote-Tunnels连接服务器

以 linux 服务器为例,项目位于远程内网服务器,通过 VS Code 同步远程服务器环境并在本地调试服务器代码(注意:无需将远程服务器代码同步到本地)。

本方法旨在从本地 VS Code 对远程服务器代码进行调试,若进行长时间的训练模型,为避免网络不稳定导致训练中断,建议使用 XRDP 或 VNC 登录到容器中运行。

VS Code 连接服务器

  1. 安装 Remote-SSH 插件

点击左侧的扩展按钮(或用 Ctrl+Shift+X),搜索插件 Remote - SSH 进行安装

  1. 打开 Remote-SSH 配置文件

安装完后会在左侧生成远程连接的图标,点击此图标,然后选择设置图标

点击弹出的 config 文件,在文件中填写配置,Host 为在 VS Code 内显示的名称,可以随意填写,HostName 是远程服务器的 IP 地址,User 是用于登录的用户名称

  1. Remote-SSH 配置
  • 内网访问

按照如下格式填写服务器相关配置信息

Host 服务器名称(任意取)
    HostName 服务器 IP
    User 登录用户名
    Port SSH 端口
# 填写好之后,保存关闭文件。
  • 外网访问

外网访问服务器需要使用中转服务器作为跳板机。主要在 SSH 配置中添加中转服务器信息,按照如下格式填写相关配置信息

Host 中转机名称(Jump_Internet)
    HostName 中转机 IP
    User 中转机用户名
    port 中转机端口
    IdentityFile 密钥文件路径(若无密钥,注释本行)

Host 目标服务器名称(任意取)
    HostName 服务器 IP
    User 登录用户名
    Port SSH端口
    ProxyJump 中转机(Jump_Internet)
# 填写好之后,保存关闭文件。
  1. 点击远程连接的图标,选择 "Connect to Host in New Window" or "Connect to Host in Current Window"

  1. 输入登录密码即可连接远程服务器

需要注意的是,外网连接过程中会弹出两次密码验证框,第一次为中转机相关的密码,第二次为目标服务器登录密码。
正常情况下,经过上述操作即可在 VS Code 连接到服务器,打开服务器上的项目即可进行调试运行程序。

若服务器网络不畅,可能无法在服务器顺利安装VS Code Server。可根据下方内容重新安装 VS Code Server。

离线安装 VS Code Server

离线安装分为两种情况:

  1. 本地主机可以连接 Internet,服务器网络不畅或不能连接 Internet

在这种情况下,我们可以设置 Remote.SSH(在本地下载 VS Code Server,然后将其传输到服务器),操作如下:

按组合键Ctrl+,来打开设置,搜索 Remote.SSH: Local Server Download 选择 always

然后执行上节步骤4-5,Remote-SSH 会自动在本地下载 VS Code Server 并使用 SCP 将其传输到服务器

  1. 本地主机和服务器处于同一局域网,但都不能连接 Internet

VS Code Server默认安装在个人用户目录 $HOME 下的 .vscode-server 文件夹,里面有三个目录 bin、extensions、data。bin 目录下面存放的是 VS Code Server 程序,extensions 目录下是 VS Code Server 端安装的插件,data 目录下是用户数据。下面给出离线安装方法。

从本地 VS Code 的 “帮助-关于” 中获取 commit_id 信息:

在其他能够联网的主机上,用红框中的信息替换下面链接的 ${commit_id} 得到下载链接,下载 vscode-server-linux-x64.tar.gz

https://update.code.visualstudio.com/commit:${commit_id}/server-linux-x64/stable

打开本地终端,解压并传输文件到服务器的安装目录,也可以使用文件传输工具(WinSCP,FileZilla)

# 在服务器创建安装目录
mkdir -p ~/.vscode-server/bin/${commit_id}
# 在本地将安装压缩包传输到服务器
scp -r -P port path-to/vscode-server-linux-x64.tar.gz username@server_ip:~/.vscode-server/bin
# 在服务端将vscode-server-linux-x64.tar.gz解压到安装目录
tar -xvf ~/.vscode-server/bin/vscode-server-linux-x64.tar.gz -C ~/.vscode-server/bin/${commit_id} --strip 1
  1. 2024年后远程端的 .vscode-server 目录结构发生变化:
.vscode-server
 ┣━ 📁bin  # 存放旧方法下的vscode commit相关文件
 ┃   ┗━ 📁${commit_id1}
 ┃   ┗━ 📁${commit_id2}
 ┃   ┗━ ···
 ┣━ 📁cli  # 存放新方法下的vscode commit相关文件
 ┃   ┗━ 📁servers
 ┃   ┃   ┗━ 📁Stable-${commit_id}
 ┃   ┃   ┃   ┗━ 📁servers
 ┃   ┃   ┃   ┗━ ···
 ┃   ┃   ┗━ ···
 ┃   ┗━ 📜iru.json  # 存放最近的vscode commit_id
 ┣━ 📜code-${commit_id}  # 存放vscode_cli_alpine_x64_cli.tar.gz解压后名为code的文件,并将其改名为code-${commit_id}
 ┣━ 📁data
 ┗━ 📁extensions

现在需要安装两个文件,两个文件的下载地址如下:

x86:
https://vscode.download.prss.microsoft.com/dbazure/download/stable/${commit_id}/vscode-server-linux-x64.tar.gz
https://vscode.download.prss.microsoft.com/dbazure/download/stable/${commit_id}/vscode_cli_alpine_x64_cli.tar.gz

arm:
https://vscode.download.prss.microsoft.com/dbazure/download/stable/${commit_id}/vscode-server-linux-arm64.tar.gz
https://vscode.download.prss.microsoft.com/dbazure/download/stable/${commit_id}/vscode_cli_alpine_arm64_cli.tar.gz

第一个文件 vscode-server-linux-x64.tar.gz 解压解包后名为 vscode-server-linux-x64 文件夹改名为 server 放在 /home/${user}/.vscode-server/cli/servers/Stable-${commit_id}/ 目录下.

第二个文件 vscode_cli_alpine_x64_cli.tar.gz 解压解包后名为 code 的文件改名为 code-${commit_id}放在/home/${user}/.vscode-server/目录下

本小节摘自https://blog.csdn.net/qq_43623902/article/details/136258880,详情可查阅原博文。

在 VS Code Server 上安装插件

为了更加方便的调试和运行代码,建议在服务器容器内的 VS Code Server 里安装 Python 和 Pylance 插件

若服务器网络不畅,可能无法顺利安装插件。可以按照下述方法在服务器 VS Code Server 里离线安装插件。

  1. 使用能够联网的本地主机在 VS Code插件市场下载离线 VS Code 插件

  1. 利用传输工具或终端将插件传输到服务器,终端传输命令可参考上方 SCP 用法

(也可以直接将本地主机上的插件文件拖拽到 VS Code 的远程项目目录)

  1. 根据下图从 VSIX 安装,找到传输到服务器的插件以完成安装

部分内容参考自丰臣英俊-VScode实现本地与远端同步开发的两种方式

posted @ 2023-09-26 10:55  qiuhlee  阅读(3827)  评论(0编辑  收藏  举报