【VS Code】使用ssh远程连接服务器可能遇到的问题

这篇文章整理使用VS Code远程连接服务器可能遇到的一些问题

使用VS Code远程的原理

我借用官网的一张图:
VS Code远程原理
简单来说就是,在SSH的基础上,VS Code在远程侧起了一个server,来方便安装扩展,进行远程调试等。这个 server 默认会下载在 ~/.vscode-server/bin/{commit-id}/ 文件夹下。commit-id 就是 VS Code当前的版本,比如我的VS Code版本如下:

版本: 1.93.1
提交: 38c31bc77e0dd6ae88a4e9cc93428cc27a56ba40
日期: 2024-09-11T17:20:05.685Z
浏览器: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Code/1.93.1 Chrome/124.0.6367.243 Electron/30.4.0 Safari/537.36

commit-id 对应的就是 38c31bc77e0dd6ae88a4e9cc93428cc27a56ba40,我们打开远程服务器的地址~/.vscode-server/bin/,就能看到

total 4
drwxrwxr-x. 6 ubuntu ubuntu 4096 Jun 10 20:05 38c31bc77e0dd6ae88a4e9cc93428cc27a56ba40

问题排查

替换文件

我这篇文章就不介绍如何连接到远程了,只介绍问题的排查手段和解决办法。
首选方法是选择“输出”,切换到“Remote-SSH”,这里有log输出,可以直接查看问题。

比如这是我安装的其中一次报错:

[19:54:07.044] Terminating local server 
[19:54:07.077] Resolver error: Error: 无法安装 VS Code 服务器

一般情况下,首次连接到远程时,需要在远程环境下载 code-server,如果远程无法联网,此时会从本地下载,并复制到远程。然而这种下载的操作有概率会失败,此时一种办法是在本地下载好,然后通过类似的办法将文件复制到远程服务器。下载的地址如下:

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

下载完的文件(以Linux为例)是一个tar.gz格式的压缩包:

vscode-server-linux-x64.tar.gz

将其解压,重命名目录为你的commit_id,使用scp或者sftp上传到之前的 ~/.vscode-server/bin/目录下即可。部分文件可能无法上传成功,这种情况就需要把压缩包直接上传,然后在远程环境上解压即可。

降低版本

对于某些扩展的问题,更换版本可能有效果。

Python

Python相关的扩展,常用的有如下

ms-python.python
ms-python.debugpy
ms-python.vscode-pylance

后两个依赖第一个,一个比较常见的bug是由于扩展加载顺序的问题,往往pylancedebugpy都激活了,python扩展还没有。这种情况下可以重新连接远程,就能解决问题。

Remote-SSH

远程连接插件一直是一个不稳定的因素,微软在多个版本尝试加入各种新特性,然而对稳定性的破坏也很严重。

我现在的版本如下:

ms-vscode-remote.remote-ssh v0.107.1

如果你远程连接也出现了问题,不妨降低版本。在扩展页面选择“卸载”右面的小三角,选择“安装特定版本”即可。

需要同一个ip的多个端口

有时候你可能需要同时连接同一个ip的多个端口。使用默认的连接命令在config里创建配置后,应该类似如下:
配置文件的地址可以通过点击左侧Remote,点击上方齿轮,然后选择本地的配置文件(比如我的位置在/home/user/.ssh/config,因为我的宿主机也是Linux,Linux连接Linux,很神奇吧)

Host 1.1.1.1
  HostName 1.1.1.1
  User ubuntu

可以通过Port指定端口号,对Host进行修改以指定别名:

Host 1.1.1.1-22223
  HostName 1.1.1.1
  User ubuntu
  Port 22223
<think>好的,用户想通过VS Code使用SSH远程连接服务器,需要一步步的指导。首先,我需要回忆一下VS Code的Remote-SSH扩展的基本用法。用户可能已经安装了VS Code,但需要确认是否安装了Remote Development扩展包,其中包括Remote-SSH。 接下来,生成SSH密钥对是常见的安全做法,用户可能已经拥有密钥,但如果没有,需要指导他们生成。记得提到使用ssh-keygen命令,并保存到默认路径。然后是将公钥上传到服务器的步骤,使用ssh-copy-id或者手动复制到~/.ssh/authorized_keys,这里可能需要根据用户的操作系统给出不同的指示,比如Windows用户可能需要手动操作。 配置SSH配置文件部分,用户可能需要帮助编辑~/.ssh/config文件,正确设置Host、HostName、User和IdentityFile。这部分需要详细说明,避免配置错误导致连接失败。 在VS Code连接时,用户需要打开远程资源管理器,选择配置好的主机,可能会遇到不同情况,比如首次连接时的验证或端口问题。如果默认端口不是22,需要提醒用户使用-P选项或者在配置文件中指定端口。 另外,用户可能遇到常见问题,比如权限错误,需要检查.ssh目录和authorized_keys文件的权限。还有防火墙设置,确保服务器SSH端口开放,引用中的信息提到防火墙规则,比如引用[5]中的端口3306,但SSH默认是22,可能需要调整。 最后,引用相关的资料,比如引用[4]提到的PuTTY密钥转换,如果用户使用Windows和PuTTY,可能需要转换密钥格式。同时,引用[3]提到使用-e选项指定端口,但在VS Code中是通过配置文件或参数设置端口。 总结步骤:安装扩展、生成密钥、上传公钥、配置SSH连接、处理常见问题。需要确保每一步都清晰,避免技术术语过多,让用户容易跟随。同时,检查是否有遗漏的细节,比如服务器是否允许SSH访问,用户是否有权限等。</think>### 通过VS Code使用SSH远程连接服务器的步骤 #### 1. **安装必要插件** - 打开VS Code,在扩展商店搜索 **Remote Development** 并安装(包含Remote-SSH组件)。 - 安装后左侧工具栏会显示 **远程资源管理器** 图标。 #### 2. **生成SSH密钥对(若未生成过)** - 本地终端执行: ```bash ssh-keygen -t rsa -b 4096 ``` 默认保存路径为 `~/.ssh/id_rsa`(私钥)和 `~/.ssh/id_rsa.pub`(公钥)[^2]。 #### 3. **上传公钥到服务器** - 使用以下命令将公钥添加到服务器的授权列表: ```bash ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip ``` 若失败,可手动将公钥内容复制到服务器的 `~/.ssh/authorized_keys` 文件中[^4]。 #### 4. **配置SSH连接信息** - 编辑本地SSH配置文件 `~/.ssh/config`: ``` Host myserver HostName server_ip_or_domain User username IdentityFile ~/.ssh/id_rsa Port 22 # 若非默认端口需修改(如2222)[^3] ``` #### 5. **通过VS Code连接** - 点击远程资源管理器 → 选择配置的 `myserver` → 右键选择 **Connect to Host**。 - 首次连接会提示验证服务器指纹,确认后输入密码(若未配置免密登录)。 #### 6. **高级配置(可选)** - **端口转发**:若服务器SSH端口非默认(如2222),在配置文件中添加 `Port 2222`。 - **代理设置**:通过 `ProxyCommand` 配置跳板机访问内网服务器。 #### 常见问题排查 - **权限错误**:确保服务器上 `.ssh` 目录权限为 `700`,`authorized_keys` 文件权限为 `600`。 - **防火墙限制**:确认服务器防火墙开放SSH端口(默认TCP/22)[^5]。 - **密钥格式问题**:若使用PuTTY生成的密钥,需转换为OpenSSH格式(使用PuTTYgen工具)。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值