想象一下以下情况:
由于 IP 过滤限制,我无法直接通过 SSH 访问服务器 A。要访问服务器(从 Windows 使用 putty),我首先连接到具有白名单 IP 地址的服务器 B,然后从那里通过 SSH 进入服务器 C,然后从那里通过 SSH 进入服务器 A(我知道这听起来很疯狂,但不幸的是我没有权限更改 IP 过滤限制)。有没有办法使用 putty/winscp/其他任何工具将文件从服务器 A 下载到我的本地 PC?
答案1
使用端口转发。例如,WinSCP 有一个通过 ssh 隧道创建连接的选项,它使用端口转发。不过,由于你需要通过隧道二啤酒花,你不能使用它。
我可能首先要创建一个到服务器 B 的 ssh 连接,该服务器有一个到服务器 C 的隧道。您可以使用 plink.exe 来实现这一点(putty 的一部分):
plink.exe -l username_on_server_B -L 8888:server-C:22 server-B
现在,您可以创建第二条隧道,使用与服务器 B 的 ssh 连接,该隧道通向服务器 A(在第二个 cmd.exe shell 中):
plink.exe -l username_on_server_C -L 8889:server-A:22 -P 8888 localhost
此后,您应该能够使用 WinSCP 连接到服务器 A。您不是连接到服务器 A,而是连接到本地主机端口 8889,该端口将通过隧道连接到服务器 A。
这尚未测试但我认为它应该可行。
答案2
最简单的不用链条的方法:
- 使用 scp 将文件从服务器 A 下载到服务器 C
- 使用 scp 将文件从服务器 C 下载到服务器 B
- 使用 WinSCP 将文件从服务器 B 下载到本地 PC
答案3
WinSCP 支持 SSH 隧道。要启用它:
- 点击“高级选项”复选框。
- 在配置树中单击“连接/隧道”,然后在此处添加中间跳转服务器。
- 在配置树中单击“会话”并配置目标服务器。单击“保存...”保存会话以供以后的用户使用
您可以使用 ssh 隧道链接其余连接。请参阅-L
openssh 的选项:ssh -L 1234:remote_host:22 user@intermediate_hop
。然后,您可以在 middle_hop 上使用 localhost:1234 连接到 remote_host ssh。