如何通过VSCode连接SSH跳板机后的远程SSH主机?
方法一:配置SSH配置文件实现直接连接(推荐)
这是最可靠的方式,能让VSCode完整支持hardware1上的所有开发调试功能。
打开本地SSH配置文件
- Linux/macOS:编辑
~/.ssh/config - Windows:编辑
C:\Users\<你的用户名>\.ssh\config(无此文件则新建)
- Linux/macOS:编辑
添加配置内容
若使用OpenSSH 7.6及以上版本(支持ProxyJump),用以下配置:Host login.university.edu HostName login.university.edu User 你的跳板机用户名 Host hardware1 HostName hardware1 User 你的hardware1用户名 # 和跳板机用户名相同可省略 ProxyJump login.university.edu若SSH版本较低不支持
ProxyJump,改用ProxyCommand:Host hardware1 HostName hardware1 User 你的hardware1用户名 ProxyCommand ssh -W %h:%p login.university.edu完成配置后连接VSCode
打开VSCode的Remote SSH插件,远程主机列表中会出现hardware1,点击连接后按提示输入密码(或配置免密登录更便捷),即可直接在VSCode中操作hardware1,调试器可正常使用。
可选:配置SSH免密登录(避免重复输密码)
本地生成SSH密钥:
ssh-keygen -t ed25519按回车默认生成路径,无需设置密码。
将本地公钥复制到跳板机:
ssh-copy-id 你的用户名@login.university.edu在跳板机上生成密钥并复制到hardware1:
先SSH登录到跳板机,执行:ssh-keygen -t ed25519 ssh-copy-id hardware1完成后,后续连接无需再输入密码。
方法二:配置launch.json在调试前自动SSH到hardware1
这种方式适用于临时场景,但调试器兼容性不如方法一,仅作备选。
先通过VSCode Remote SSH连接到
login.university.edu。创建tasks.json
打开命令面板(Ctrl+Shift+P),选择Tasks: Configure Task→Create tasks.json from template→Others,替换为以下内容:{ "version": "2.0.0", "tasks": [ { "label": "ssh-to-hardware1", "type": "shell", "command": "ssh hardware1", "problemMatcher": [] } ] }修改launch.json
打开调试面板,创建或修改launch.json(以C++的gdb调试为例),添加preLaunchTask字段:{ "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "/path/to/your/program/on/hardware1", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "preLaunchTask": "ssh-to-hardware1" } ] }注意:这种方式需要手动输入hardware1的密码,建议在跳板机上配置到hardware1的免密登录以避免重复输入。
内容的提问来源于stack exchange,提问作者agustinvaca

