远程“不可直接访问”机器上的 scp/sshfs

远程“不可直接访问”机器上的 scp/sshfs

也许标题必须更改,但我有以下情况:

  • 我可以 ssh 到主机 A

  • 从 A,我可以通过 ssh 进入机器 B,但无法从我的计算机访问这台机器。机器的名称(以及它的 ip)仅是本地的。

  • 我如何才能直接通过 sshfs(和/或使用 scp)连接到机器 B,而不必从 B->A 再从 A->我的机器 scp 文件。这样一来,我的工作效率确实下降了,

PS:我无法更改 A 和 B 中的配置...

答案1

如果您使用计算机上可访问的凭据(我们称之为 W)向 B 进行身份验证,例如密码/用户名元组(而不是 A 上的密钥),则可以构建 SSH 隧道,例如:

W $ ssh -L 1234:B:22 A

进而

W $ ssh -p 1234 [email protected]

或者类似地使用 scp 和 sshfs。即,将您本地机器上的端口 1234(通常是 127.0.0.1 或 ::1)转发到 B,从 A 的角度来看是端口 22。

答案2

如果您在主机 A 上有 netcat,那么 ssh 的 ProxyCommand 就是您的朋友。

编辑本地 .ssh/config 如下

Host B
    HostName B.internal.domain
    ProxyCommand ssh A nc %h %p 2> /dev/null

然后,当您尝试通过 ssh 进入主机 B 时:它首先创建到 A 的 ssh 会话,然后通过 netcat(nc)将流量隧道传输到主机 B(%h)的端口 22(%p)。

答案3

您和您的目的地运行的是什么操作系统?

如果是 Linux,那么 Zmodem 协议非常适合您要做的事情。

相关内容