背景 链接到标题

日常开发免不了频繁通过 VS Code 的 Remote SSH 连接远程服务器。每次都要敲:

code --remote ssh-remote+some-host /home/user/project

路径要记、主机名要打、目录要拼,烦。

能不能 rcode my-server 就完事?

其他方案对比 链接到标题

先看看除了敲命令,还有哪些方式打开 Remote SSH:

方案 操作步骤 评价
VS Code 命令面板 F1 → “Remote-SSH: Connect to Host…” → 选主机 → File > Open Folder → 选目录 点选四五次,慢
本地终端 code --remote code --remote ssh-remote+some-host /home/user/project 可用,但路径要自己记
macOS open 打开 URL open vscode://vscode-remote/ssh-remote+some-host/home/user/project 可脚本化,但路径写死
Markdown/HTML 中放 VS Code 链接 在文档里写 vscode://vscode-remote/ssh-remote+some-host/home/user/project,浏览器点击触发 适合文档入口,但仍然路径写死
终端别名/函数 本文方案 一行搞定

这里容易踩一个坑:code 是本地 macOS 上的 VS Code CLI,不是远程服务器上的命令。已经 SSH 登录到远程机器后再敲 code .,通常只会得到 command not found

rcode 函数 链接到标题

核心思路很简单:SSH 连上去问 home 目录在哪,然后丢给 code --remote

rcode() {
    local host="${1:-default}"
    local home
    home=$(ssh "$host" 'echo $HOME' 2>/dev/null) || home="~"
    code --remote "ssh-remote+$host" "$home"
}

用起来就是

rcode my-server     # 连接 my-server 的 home 目录
rcode               # 连接默认主机(SSH config 中名为 default 的主机)

没有硬编码的路径表,所有主机信息来自 ~/.ssh/config,增删主机无需改函数。

前置条件 链接到标题

  1. macOS 已安装 VS Code 及 Remote - SSH 插件
  2. 已将 code 命令添加到 PATH:VS Code 内运行 Shell Command: Install 'code' command in PATH
  3. ~/.ssh/config 已配置目标主机,例如:
Host my-server
    HostName my-server.example
    User remote-user
    IdentityFile ~/.ssh/id_ed25519
  1. SSH 免密登录已配置

一点说明 链接到标题

为什么不传固定路径?因为不同主机的 home 目录可能不同(/home/user/home/ubuntu/home/ecs-user……)。动态查询一劳永逸,换机器不用改函数。

default 是约定,在 SSH config 里配一个名为 default 的主机即可作为默认值,不传参时使用。

总结 链接到标题

一行函数,无配置依赖,和 SSH config 天然解耦。适合在本地 macOS 上频繁切换远程主机的开发场景。