VSCode远程隧道如何转发SFTP端口?
VSCode Remote Tunnel Access 端口转发机制说明及问题解决
一、VSCode Remote Tunnel 的端口转发机制
VSCode Remote Tunnel 的端口转发分为两种核心模式,这是你遇到问题的关键:
- Web 代理模式:你看到的
https://abcdefgh-22.uks1.devtunnels.ms这类链接属于这种模式,它通过微软 devtunnels 服务提供 HTTP/HTTPS 协议的代理访问,仅支持 Web 流量,完全不兼容 SFTP(SSH 二进制协议),所以无法用这类链接访问远程 SSH 端口。 - 本地端口绑定模式:这是适配 SSH/SFTP 这类非 Web 协议的模式——将远程主机的端口直接映射到本地电脑的指定端口,让本地程序可以通过
localhost:端口直接与远程端口通信,这才是你需要的转发方式。
二、实现你的链路需求的操作步骤
你的目标链路是 ComputerA:8123 → VSCode Tunnel → ComputerB:22 → SFTP → ComputerC:22,按以下步骤配置即可:
在 VSCode 中配置正确的端口转发
- 打开已连接到 ComputerB 的 VSCode 会话,调出「Ports」面板:可以通过左侧活动栏的「远程资源管理器」找到,或按
Ctrl+Shift+P输入「Ports: Focus on Ports View」。 - 点击「Forward a Port」按钮,输入远程端口
22,在「Local Port」输入框中指定8123(如果8123被占用,替换为其他可用端口)。 - 确认后,Ports 面板会出现类似
8123 → localhost:22 (ComputerB)的记录,此时本地8123端口已与 ComputerB 的22端口通过隧道绑定。
- 打开已连接到 ComputerB 的 VSCode 会话,调出「Ports」面板:可以通过左侧活动栏的「远程资源管理器」找到,或按
用 SFTP 客户端完成链路跳转
- 打开 SFTP 客户端(如 FileZilla、WinSCP),先连接到转发后的本地端口:
- 主机:
localhost - 端口:
8123 - 用户名/密码/密钥:ComputerB 的 SSH 认证信息
- 主机:
- 成功连接到 ComputerB 后,再通过该主机发起对 ComputerC 的 SFTP 连接:可以在客户端的命令行执行
sftp user@ComputerC,或利用客户端的「跳转主机」功能直接配置二级连接。
- 打开 SFTP 客户端(如 FileZilla、WinSCP),先连接到转发后的本地端口:
常见问题排查
- 确认 ComputerB 的22端口允许本地回环访问(默认 SSH 服务都允许)。
- 验证转发是否生效:在 ComputerA 的终端执行
telnet localhost 8123,若能连通则转发正常;若不通,检查 VSCode 隧道连接状态,或更换本地端口重试。 - 坚决不要用 devtunnels 的 HTTPS 链接访问 SFTP,该模式仅适配 Web 流量。
内容的提问来源于stack exchange,提问作者00b4c94a91b1c56118eb
相关产品推荐
相关产品推荐

