正如标题所示,我想在本地机器上编辑(机器 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