Native SSH Terminal
将 VS Code 工作区的默认终端无感替换为远程 SSH 终端 —— 本地编辑 + 远程执行无缝衔接。
功能
- 多主机管理 — 侧边栏面板管理多个 SSH 服务器,支持密码/密钥认证
- 远程工作区 — 将远程服务器上的任意目录作为 VS Code 工作区打开,文件浏览/编辑/终端均在远程
- 终端无感替换 — 一键将所有新建终端替换为远程 SSH Shell,agent 无需手动切换
- 多窗口独立 — 每个 VS Code 窗口可连接不同服务器或不同路径,互不干扰
- 会话恢复 — 关闭 VS Code 后重新打开,自动恢复上次的远程工作区
安装
下载 native-ssh-terminal-0.1.0.vsix 后:
Ctrl+Shift+P → Extensions: Install from VSIX... → 选择 .vsix 文件
或命令行:
code --install-extension native-ssh-terminal-0.1.0.vsix
使用
- 点击左侧活动栏的 Native SSH Terminal 图标
- 点击标题栏 + 添加远程主机(主机地址、用户名、端口、密码或密钥)
- 展开主机节点,选择或输入远程路径
- 点击 在当前窗口连接 或 在新窗口连接
- `Ctrl+`` 新建终端 → 自动进入远程 Shell
架构
┌─ VS Code ───────────────────────────────────────────┐
│ │
│ native-ssh://host/path │
│ │ │
│ └── SftpFileSystemProvider (ssh2 SFTP) │
│ ↓ 文件浏览/编辑 │
│ │
│ Terminal │
│ │ │
│ └── ssh-bridge.js (独立进程, ssh2 shell) │
│ ↓ 远程终端交互 │
│ │
│ SecretStorage │
│ └── SSH 密码 (系统级安全存储) │
└──────────────────────────────────────────────────────┘
src/
├── extension.ts 入口:多主机管理、profile 注入、连接/断开
├── sftp-provider.ts SFTP FileSystemProvider
├── ssh-bridge.ts 独立 bridge 进程,管理单个终端 shell
└── ssh-tree.ts TreeView 数据提供者
支持的认证方式
- SSH Key(自动发现
~/.ssh/id_ed25519 等)
- 密码(存储在 VS Code SecretStorage)
- SSH Agent
已知限制
- 远程工作区需要在目标路径下写入
.vscode/settings.json(存入 terminal profile 配置)。只读文件系统会回退写入全局设置,断开时自动清理
- 同一 VS Code 窗口一次只能维持一个活跃 SSH 连接
开发
npm install
npx tsc -p .
# F5 启动 Extension Development Host 调试
npx @vscode/vsce package --allow-missing-repository # 打包 .vsix
License
MIT
| |