VScode服务器离线连接配置
VScode提供了两种连接服务器的方法,Remote-SSH
和Remote-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
是远程文件路径。 -
.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术