如何通过(Putty)SSH 下载文件

如何通过(Putty)SSH 下载文件

想象一下以下情况:

由于 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

最简单的不用链条的方法:

  1. 使用 scp 将文件从服务器 A 下载到服务器 C
  2. 使用 scp 将文件从服务器 C 下载到服务器 B
  3. 使用 WinSCP 将文件从服务器 B 下载到本地 PC

答案3

WinSCP 支持 SSH 隧道。要启用它:

  • 点击“高级选项”复选框。
  • 在配置树中单击“连接/隧道”,然后在此处添加中间跳转服务器。
  • 在配置树中单击“会话”并配置目标服务器。单击“保存...”保存会话以供以后的用户使用

您可以使用 ssh 隧道链接其余连接。请参阅-Lopenssh 的选项:ssh -L 1234:remote_host:22 user@intermediate_hop。然后,您可以在 middle_hop 上使用 localhost:1234 连接到 remote_host ssh。

相关内容