VScode服务器离线连接配置

VScode服务器离线连接配置

VScode提供了两种连接服务器的方法,Remote-SSHRemote-Tunnels。其中Remote-SSH是比较常用的类型。本文将介绍如何在 目标计算机无法连上互联网 的情况下,通过 离线部署 的方式让VScode可以远程访问目标计算机。

一、准备步骤

1、vscode初始化

在vscode左侧的扩展按钮(或Ctrl+Shift+X),搜索插件Remote-SSH,点击Microsoft版本的Remote-SSH并在下载页中进行下载

2、准备vscode资料

在顶部菜单栏help中点选about,会有一个弹出框,复制其中的Commit项后面的值,形如:abdxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

 ⚠️这个ID值需手动拷贝,后面提到的所有${commit_id}的部分都需手动更改为您自己的Commit_ID值

3、软件准备(可选)

建议准备一个FileZilla,便于文件传输

如果不采用这个软件,则需要使用scp语句进行传输。如果你是使用windows端而非linux,需要在windows端先下载GIT,然后即可使用和ssh,scp相关的指令。scp用法可以参考文末附录

二、解决方法

1、下载离线文件并传输至指定位置

在某次更新后,远端的.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

2、传输文件

需要使用一个终端先和目标计算机建立ssh链接。连接成功后,

第一个文件: vscode-server-linux-x64.tar.gz 解压后,文件夹名字为 vscode-server-linux-x64

  • 需要将该文件夹改名为 server 放在 /home/${user}/.vscode−server/cli/servers/Stable−${commit_id}/ 目录下

  • 同时这个文件需要解压在/home/${user}/.vscode-server/bin/${commit_id}目录下,执行下列指令创建文件夹,后不再赘述:

    mkdir -p /home/${user}/.vscode-server/bin/${commit_id}

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

解压指令:tar -zxvf xxx.tar.gz

3、创建lru.json文件

~/.vscode-server/cli/servers/ 目录下创建 lru.json 文件,内容为:

["Stable-${commit_id}"]

这一步确保 VS Code Server 能正确识别离线安装的版本

三、可能的问题

1、仍不能连接

如果仍然连接不上,则可能需要修改.vscode-server文件夹及其子目录的权限,例如权限改为700,再尝试连接:

chmod -R 700 /home/${user}/.vscode-server/

2、检查目录

检查目录结构是否符合要求,有的错误可能只是文件放的位置错了:

~/.vscode-server/
├── bin/${commit_id}/
├── cli/
│   └── servers/Stable-${commit_id}/server
├── code-${commit_id}
└── extensions/

3、检查日志

完成上述步骤后,需重新尝试连接服务器。如果仍然出现问题,可以查看服务器端的日志文件(如 ~/.vscode-server/cli/servers/Stable-${commit_id}/log.txt)以查看问题具体原因

四、免密登录

生成 ssh 使用的公钥/密钥对,需要从客户端上的命令提示符(windows:cmd【需下载GIT】、linux:bash等)运行以下命令

ssh-keygen -t rsa

输入命令执行完成后会生成.ssh文件夹,里面会有这两个文件

  • id_rsa(私钥)

  • id_rsa.pub(公钥)

在服务器上添加文件夹(需先登录上服务器)mkdir -p ~/.ssh

添加公钥到远程服务器

将 SSH 公钥添加到远程服务器
ssh-copy-id ${user}@${server_ip}

id_rsa.pub(公钥)生成后,打开复制内容,打开远程主机/home/${user}/.ssh/authorized_keys文件,

如果文件不存在就创建,然后粘贴复制的公钥内容并打开

通过更新 ssh 配置文件连接中的C:\Users\${user}\.ssh\config/home/${user}/.ssh/config配置文件

在你要连接的Host下配置IdentityFile,后面填写id_rsa(私钥)路径,并保存:

Host xxx
  HostName xxx.xxx.xxx.xxx
  Port xx
  User xxx
  IdentityFile "C:\Users\${user}\.ssh\id_rsa"

如果手动创建 /home/${user}/.ssh/authorized_keys,需要更改其权限:

chmod 700 /home/${user}/.ssh
chmod 600 /home/${user}/.ssh/authorized_keys

五、离线配置conda环境

首先在可以联网的电脑下载miniconda,并通过scp的方式上传至服务器

上传完成后,执行下列指令,给文件增加运行权限并安装:

chmod u+x Miniconda3-latest-Linux-x86_64.sh
./Miniconda3-latest-Linux-x86_64.sh

安装完成后记得:source ~/.bashrc

在和服务器差不多的系统和系统架构下的电脑(比如服务器是Ubuntu , linux系统,x86_64架构,那你自己的电脑也需要类似)创建自己的conda环境,下载安装好环境包,保证代码能够运行后,就对该conda环境进行打包。

执行下面的指令:

conda install conda-pack # 安装conda pack
# or
pip install conda-pack
# 在你自己的电脑打包,需关注自己的环境名称,并替换${env_name}部分字段
conda pack -n ${env_name} -o ${env_name}.tar.gz
# 上传你的压缩包
scp ${env_name}.tar.gz ${user}@${server_ip}:~/

在服务器上:

# 解压你上传的压缩包
mkdir -p miniconda3/envs/${env_name}/
tar -xzvf ${env_name}.tar.gz -C miniconda3/envs/${env_name}/
# 修复clear命令无法执行问题
./miniconda3/envs/${env_name}/bin/python
source ./miniconda3/envs/${env_name}/bin/activate
conda-unpack

这样你在服务器上,使用conda info -e指令,即可看到你上传的${env_name}环境了,可以离线使用自己配好的python环境

附录

1、scp用法

scp [选项] [源文件] [目标文件]
  • 源文件:要复制的文件或目录路径。

  • 目标文件:复制到的目标路径。

  • 选项:用于控制 scp 的行为,例如递归复制、指定端口等。

常用选项

  • -r:递归复制目录。

  • -P:指定远程服务器的 SSH 端口(默认是 22)。

  • -i:指定私钥文件路径(用于密钥认证)。

  • -C:启用压缩,适合传输大文件。

  • -v:显示详细信息,方便调试。

从本地复制到远程服务器

  • scp file.txt ${user}@${remote_host}:/home/${user}/
    
  • file.txt 是本地文件路径。

  • ${user} 是远程服务器的用户名。

  • ${remote_host} 是远程服务器的 IP 地址或主机名。

  • /home/${user}/ 是远程服务器的目标路径。

从远程服务器复制文件到本地

假设你想将远程服务器上的 /home/user/file.txt 文件复制到本地的当前目录:

scp ${user}@${remote_host}:/home/${user}/file.txt .
  • ${user}@${remote_host}:/home/${user}/file.txt 是远程文件路径。

  • . 表示命令行当前的目录。

 
posted @   拓佑豪  阅读(194)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示