Frost_ZX
Frost_ZX
Published on 2025-06-25 / 6 Visits
0
0

如何使用 SSH Tunnel 通过 A 设备连接 B 设备?

Linux

使用 SSH Tunnel 通过 A 设备连接 B 设备,有以下两种常见的方式。

本地转发(A 设备能直接访问 B 设备)

在 A 设备上执行命令:ssh -f -N -L A转发port:B主机IP:B目的端口 root@B主机

参数含义如下:

  • -f:让 SSH 在后台运行。

  • -N:不执行远程命令,只建立隧道。

  • -L:指定本地转发,格式为 本地转发端口:目标主机IP:目标端口

例如,要将 A 设备的 8080 端口转发到 B 设备的 80 端口,B 设备的 IP 是 192.168.1.100,命令为 ssh -f -N -L 8080:192.168.1.100:80 root@192.168.1.100。之后,访问 A 设备的 8080 端口,就可以访问 B 设备的 80 端口。

远程转发(B 设备能访问 A 设备,但 A 设备无法直接访问 B 设备)

假设 A 设备有公网 IP,B 设备在 NAT 之后。首先在 A 设备上编辑 sshd 的配置文件 /etc/ssh/sshd_config,将 GatewayPorts 开关打开,然后重启 sshd 服务,命令为 sudo systemctl restart sshd

接着在 B 设备上执行命令:autossh -p 22 -M 6777 -NR '*:6766:localhost:22' usera@a.site

参数含义如下:

  • -p:指定 SSH 连接的端口。

  • -M:指定监听隧道状态的端口。

  • -NR:指定远程转发,* 表示绑定到所有网络接口。

最后在 A 设备上使用命令 ssh -p 6766 userb@localhost,即可通过 A 设备的 6766 端口反向 SSH 连接到 B 设备。

Windows

使用 OpenSSH

  1. 确保 Windows 安装 OpenSSH 客户端:在 Windows 10 及以上版本,可通过“设置”中的“应用和功能”,点击“可选功能”,添加“OpenSSH客户端”进行安装。

  2. 建立隧道:以管理员身份打开 PowerShell,执行 ssh -L 本地端口:B主机IP:B目的端口 A主机用户名@A主机IP。例如 ssh -L 8080:192.168.1.100:80 user@192.168.1.200,将本地 8080 端口与 B 设备的 80 端口建立隧道。

  3. 通过隧道访问:访问 localhost:本地端口,就可访问 B 设备对应端口服务。

使用 PuTTY

  1. 下载和安装 PuTTY:从 PuTTY 官方网站下载并安装。

  2. 配置隧道:打开 PuTTY,在“Session”类别中填写 A 设备的主机名或 IP 地址及 SSH 端口。在“Tunnels”类别中,“Source port”填写本地端口,“Destination”填写“B主机IP:B目的端口”,点击“Add”添加隧道设置。

  3. 保存设置并连接:回到“Session”类别,保存设置后点击“Open”连接到 A 设备,即可建立 SSH 隧道。

使用 WinSCP(用于文件传输场景)

  1. 下载和安装 WinSCP:从 WinSCP 官方网站下载安装。

  2. 配置站点:打开 WinSCP,点击“新建站点”。在“主机名”中填写 A 设备的 IP 地址,“用户名”和“密码”填写 A 设备的登录凭证。在“高级”设置中,选择“隧道”,勾选“使用隧道”,并填写 B 设备的 IP 地址和端口。

  3. 连接并传输文件:保存站点设置后点击“登录”,连接成功后可在 WinSCP 界面中进行文件传输等操作。


Comment