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

想象一下以下情况:

由于IP过滤限制,我没有直接SSH访问服务器A. 要使用putty访问服务器,我首先连接到Server-B,它有一个白名单的IP地址,然后从那里通过SSH连接到Server-C,然后从那里通过SSH连接到Server-A(我知道声音疯了,但不幸的是我没有权利改变IP过滤限制)。 有没有办法使用putty / winscp /其他任何东西从服务器A下载文件到我的本地PC?

使用端口转发。 例如,WinSCP可以select通过ssh隧道创build连接,并使用端口转发。 不过,既然你需要通过跳,你不能使用它。

我会首先创build一个SSH连接到服务器B,它有一个隧道到服务器C。 你可以使用plink.exe作为这个(腻子的一部分):

plink.exe -l username_on_server_B -L 8888:server-C:22 server-B 

现在你可以创build第二个隧道,使用ssh连接到server-B,这导致server-A(在第二个cmd.exe shell中):

 plink.exe -l username_on_server_C -L 8889:server-A:22 -P 8888 localhost 

在此之后,您应该能够使用WinSCP连接到服务器A. 而不是服务器A,您连接到本地主机端口8889,将通过隧道到服务器-A。

这是未经testing,但它应该工作,我认为。

最简单的方式没有链:

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

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

  • 点击“高级选项”checkbox。
  • 在configuration树中单击“连接/隧道”,在这里添加中间跳跃服务器。
  • 在configuration树中单击“Session”并configuration目标服务器。 通过单击“保存…”为以后的用户保存会话

您可以使用SSH隧道连锁其余的连接。 请参阅选项-L for openssh: ssh -L 1234:remote_host:22 user@intermediate_hop 。 然后你可以通过在intermediate_hop上使用localhost:1234来连接remote_host ssh。