VSCode 远程连接 Linux 配置
本教程前提是安装并配置好 ssh 服务,并且远程主机和本地主机在同一个局域网内。
VSCode 远程连接 Linux 配置涉及扩展安装、SSH 连接命令及配置文件更新。针对无法联网环境,提供基于 commit-id 的离线 vscode-server 下载与安装步骤,区分新旧版目录结构差异。同时阐述生成 SSH 密钥对、配置 authorized_keys 及修改 sshd_config 实现免密登录的全过程,解决权限设置和 known_hosts 冲突等常见问题。

本教程前提是安装并配置好 ssh 服务,并且远程主机和本地主机在同一个局域网内。
在 VSCode 扩展中搜索 Remote - SSH,下载安装
在 VSCode 中依次点击 远程资源管理器->新建远程,在打开的连接命令窗口中输入命令
ssh<user>@<hostname>:[port]
输入后按 Enter 键选择要更新的配置文件,一般选择第一个也就是 C:\Users\${user}\.ssh\config
在 VSCode 中依次点击 远程资源管理器->打开 SSH 配置文件,选择要更新的 SSH 配置文件,一般选择第一个也就是 C:\Users\${user}\.ssh\config,打开后编辑配置并保存:
Host xxx HostName xxx.xxx.xxx.xxx Port xx User xxx IdentityFile "xxx"
如果要配置多个远程,继续在此文件追加配置即可
1.2.1 或 1.2.2 完成后点击 远程资源管理器的 刷新,此时 远程资源管理器 会出现刚配置的远程连接,根据需要选择 在当前窗口连接 或 在新窗口中连接,此时会让你输入密码,然后会在远程端下载所需文件 (需要联网),如果无法联网,请看 [2. 离线下载 vscode-server 并安装]
如果远程端不能联网可以下载包离线安装,下载 vscode-server 的 url 需要和 vscode 客户端版本的 commit-id 对应。通过 vscode 面板的帮助->关于 可以获取该信息,复制信息,我当前版本如下 (提交后面对应的就是 commit_id):
版本:1.89.1 (system setup) 提交:dc96b837cf6bb4af9cd736aa3af08cf8279f7685 日期:2024-05-07T05:13:33.891Z Electron: 28.2.8 ElectronBuildId: 27744544 Chromium: 120.0.6099.291 Node.js: 18.18.2 V8: 12.0.267.19-electron.0 OS: Windows_NT x64 10.0.19044
vscode-server 下载地址如下,其中 commit_id 是上面复制的提交 id:
x86: https://update.code.visualstudio.com/commit:${commit_id}/server-linux-x64/stable
arm: https://update.code.visualstudio.com/commit:${commit_id}/server-linux-arm64/stable
将下载的文件 vscode-server-linux-x64.tar.gz 解压解包后名为 vscode-server-linux-x64 文件夹改名为 ${commit_id} 放在 /home/${user}/.vscode-server/bin/ 目录下.
在某次更新后远程端的 .vscode-server 目录结构发生变化:
.vscode-server
├── bin # 存放旧方法下的 vscode commit 相关文件
│ └── ${commit_id1}
│ └── ${commit_id2}
│ └── ···
├── cli # 存放新方法下的 vscode commit 相关文件
│ └── servers
│ └── Stable-${commit_id}
│ └── server
│ └── ···
│ └── ···
├── 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.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/ 目录下
如果仍然连接不上,则可能需要修改 .vscode-server 文件夹及其子目录的权限,例如权限改为 700,再尝试连接:
chmod -R 700 /home/${user}/.vscode-server/
打开远程主机的 sshd_config 文件,一般在 /etc/ssh/sshd_config 文件,找到 AllowTcpForwarding no 这一行,将 no 改为 yes,然后保存退出.
然后重启 ssh 服务:
sudo systemctl restart sshd
如果仍然连接不上,则可能是由于 known_hosts 文件问题导致的,如果你使用了相同的 ip 地址连接过不同主机就会出现此问题,可以尝试删除 known_hosts 文件,然后再尝试连接,本地主机下执行以下命令:
# powershell
rm $env:USERPROFILE\.ssh\known_hosts
# cmd
del %USERPROFILE%\.ssh\known_hosts
生成 ssh 使用的公钥/密钥对,请从客户端上的 PowerShell 或 cmd 提示符运行以下命令,具体使用方法详细见:微软官方
ssh-keygen -t rsa
输入命令执行完成后会生成 C:\Users\${user}\.ssh,里面会有 id_rsa(私钥),id_rsa.pub(公钥) 两个文件,这两个是默认名称,在执行命令时可以添加选项选择不同文件名,如果更改文件名,后面步骤对应文件路径也要更改
id_rsa.pub(公钥) 生成后,打开复制内容,打开远程主机 /home/${user}/.ssh/authorized_keys 文件,如果文件不存在就创建,然后粘贴复制的公钥内容,然后打开 1.2.2 通过更新 ssh 配置文件连接 中的 C:\Users\${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
打开远程主机的 sshd_config 文件,一般在 /etc/ssh/sshd_config 文件,找到 PubkeyAuthentication no 这一行,将 no 改为 yes,然后保存退出.
然后重启 ssh 服务:
sudo systemctl restart sshd
3.3 完成后点击 VSCode 中 远程资源管理器的 刷新,此时 远程资源管理器 会出现刚配置的远程连接,根据需要选择 在当前窗口连接 或 在新窗口中连接,点击后确认左下角进入到连接成功的状态,期间没有提示输入密码的窗口,即代表成功了

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online