SSH 远程端口转发

SSH 远程端口转发

正如标题所示,我想在本地机器上编辑(机器 A) 服务器中的文件 (机器 C) 可通过 ssh 连接到另一台服务器进行访问 (机器 B)(共两跳)。

我正在使用 Sublime Text 4,它有一个名为 SFTP 的软件包,但我认为它没有隧道选项。我在本地计算机上使用 Windows(安装了 WSL2 Ubuntu),远程服务器有 Ubuntu。

我可以使用 WinSCP 编辑 Sublime 中的单个文件,但我对访问整个目录感兴趣。

实现这一目标的最佳方法是什么?

编辑:我尝试过两种方法,但都存在不足。

方法 1:在远程服务器上安装 rmate(机器 C) 并在本地计算机上执行 rsub (机器 A)我按照说明进行操作这里这里遗憾的是,这只能让我像 WinSCP 一样编辑单个文件。

方法 2:使用 sshfs。这样我就可以从远程服务器挂载我想要的目录(机器 C)到我的本地计算机(机器 A)。我使用了以下命令。

sshfs username@MachineC:/path/to/remote/dir /path/to/local/dir -o ssh_command='ssh -J username@MachineB'

这种方法的问题在于 Sublime,因为它不能很好地处理已挂载的目录。文件更改时它不会刷新,需要重新启动才能注册更改。

答案1

您可以使用 SSH 将任何端口从本地转发到远程计算机,并使用远程 SSH 主机作为“跳跃”。SSH 能够转发端口,因此您只需连接到本地主机即可使用任何应用程序(例如)。

SSH 远程端口转发

将远程网络中的机器的端口连接到您的机器:

ssh -N -R [your_ssh_server_interface]:[your_port]:[target-server]:[port_you_want_to_forward] [username]@[your_ssh_server_ip]

your_ssh_server_interface使用localhost时可以省略。

-N可以省略,因为它不启用 ssh 命令执行,它在转发端口时很有用。

该命令在远程机器(目标网络内)运行。

例子

ssh -N -R 192.168.67.1:4445:192.168.67.128:445 [email protected]

上述命令转发主机 192.168.67.128 IP 192.168.67.1 的 445 端口(通过 SSH)。

您将能够连接的目标服务器可以设置为 127.0.0.1。

为了使其正常工作,远程机器上的 SSHd 需要允许GatewayPorts——检查/etc/ssh/sshd_config以下行:

GatewayPorts yes

相关内容