远程代码开发Remote - SSH使用

前言

Remote - SSH 是由 Microsoft 为 Visual Studio Code(VS Code)开发的一款官方扩展,允许开发者通过 SSH(Secure Shell)协议直接在远程服务器上进行开发工作,就像在本地一样流畅和高效。

核心功能

  1. 远程开发环境无缝接入
    安装 Remote - SSH 后,你可以在 VS Code 中直接连接到远程 Linux、macOS 或 Windows(需支持 SSH 服务)机器,并在该机器上打开文件夹、运行终端、调试代码等。
  2. 本地体验,远程执行
    所有编辑、IntelliSense(智能提示)、代码补全、调试、Git 操作等都在远程服务器上执行,但界面完全集成在本地的 VS Code 中,用户几乎感觉不到差异。
  3. 无需在远程安装完整 IDE
    只需在远程机器上安装一个轻量级的“VS Code Server”(由扩展自动部署),无需手动配置复杂的开发环境。
  4. 支持多跳(Jump Host)和代理
    可通过配置 ~/.ssh/config 文件支持复杂的网络拓扑,例如通过跳板机(bastion host)连接内网服务器。
  5. 与本地扩展生态兼容
    大多数 VS Code 扩展会自动安装在远程端运行(如 Python、Go、Docker 等语言支持),确保功能完整。

Remote - SSH

使用前提

  • 本地机器已安装 VS Code。
  • 本地和远程机器均支持 SSH(通常 Linux/macOS 自带;Windows 可启用 OpenSSH 客户端/服务端)。
  • 你拥有远程服务器的 SSH 访问权限(用户名、IP、密钥或密码)。

基本使用步骤

  1. 在 VS Code 中安装 Remote - SSH 扩展(由 Microsoft 发布)。
  2. Ctrl+Shift+P,输入 “Remote-SSH: Connect to Host…”
  3. 首次使用可选择 “Add New SSH Host…”,输入类似 user@hostname 的地址。
  4. 选择 SSH 配置文件(通常是 ~/.ssh/config),扩展会自动更新配置。
  5. 连接后,VS Code 会在远程服务器上安装所需组件,并打开远程文件系统。
  6. 此后可像本地一样打开文件夹、编辑代码、运行终端等。

切换文件夹

VSCode切换文件夹也获取的是服务器上的文件夹,非常方便。

快捷键 Ctrl+K Ctrl+O

典型应用场景

  • 在云服务器(如 AWS EC2、阿里云 ECS)上开发和调试。
  • 访问公司内网开发机或高性能计算集群。
  • 统一团队开发环境(所有人在相同远程环境中编码)。
  • 避免在本地安装复杂依赖(如 CUDA、特定版本的编译器等)。

注意事项

  • 首次连接时需要网络通畅,VS Code 会自动下载并安装远程服务器组件。
  • 若使用 SSH 密钥认证,建议配置 ~/.ssh/config 并设置好 IdentityFile
  • 某些图形化调试工具(如 GUI 调试器)可能受限,但命令行调试完全支持。
  • 网络延迟较高时,编辑体验可能略有影响(但远优于传统 SFTP + 本地编辑方式)。

Docker

VScode安装Docker扩展后,也能方便管理连接的SSH对应服务器中的Docker了。

免密登录服务器

Windows 本地 实现 SSH 免密登录远程 Linux(或支持 SSH 的服务器),以便 VS Code 的 Remote - SSH 扩展能自动连接、无需每次输入密码,可以按以下步骤操作。

前提条件

  • 你的 Windows 版本 ≥ Windows 10(推荐 1809 以上)或 Windows 11
    (自带 OpenSSH 客户端)
  • 远程服务器已开启 SSH 服务(如 Linux 的 sshd
  • 你有远程服务器的用户名和 IP 地址

生成 SSH 密钥对(Win)

打开 PowerShell(普通用户即可)

执行以下命令生成密钥(推荐 Ed25519 算法):

1
ssh-keygen -t ed25519 -C "183518918@qq.com"

按三次回车:

  • 保存路径:默认 C:\Users\<你的用户名>\.ssh\id_ed25519
  • Passphrase:留空(直接回车) ← 这是免密的关键!

生成的文件:

  • 私钥:C:\Users\<用户名>\.ssh\id_ed25519
  • 公钥:C:\Users\<用户名>\.ssh\id_ed25519.pub

公钥上传到远程服务器

方法一

使用 scp(推荐)

1
scp $env:USERPROFILE\.ssh\id_ed25519.pub root@172.29.195.19:/tmp/id_ed25519.pub

然后登录服务器,追加到 authorized_keys

1
2
3
4
5
ssh root@172.29.195.19
mkdir -p ~/.ssh
cat /tmp/id_ed25519.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

方法二

手动复制(更通用)

在 PowerShell 查看公钥内容:

1
type $env:USERPROFILE\.ssh\id_ed25519.pub

复制输出的整行(以 ssh-ed25519 AAAA... 开头)

用密码登录远程服务器:

1
ssh root@172.29.195.19

在远程服务器上执行:

1
2
3
4
5
mkdir -p ~/.ssh
echo "粘贴刚才复制的公钥" >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
exit

测试免密登录

在 PowerShell

1
ssh root@172.29.195.19

配置 VS Code Remote - SSH 使用该密钥

VS Code 默认会使用 Windows 的 OpenSSH 客户端和 ~/.ssh 目录,但为确保万无一失,建议配置 SSH config 文件。

在 Windows 上创建或编辑 SSH 配置文件:

1
explorer $env:USERPROFILE\.ssh\config

添加如下内容(替换为你的信息):

1
2
3
Host 172.29.195.19
HostName 172.29.195.19
User root

保存文件。

在 VS Code 中连接

  1. 打开 VS Code
  2. Ctrl+Shift+P → 输入 Remote-SSH: Connect to Host…
  3. 应该直接连接成功,不再弹出密码输入框