![如何使用 pscp 通过中间网关服务器跳跃复制文件](https://linux22.com/image/1358297/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20pscp%20%E9%80%9A%E8%BF%87%E4%B8%AD%E9%97%B4%E7%BD%91%E5%85%B3%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%B7%B3%E8%B7%83%E5%A4%8D%E5%88%B6%E6%96%87%E4%BB%B6.png)
我和远程服务器之间有一个 Linux 跳转盒。我看过一些关于如何使用 scp 实现这一点的帖子(例如这里),但我使用的是 Windows 机器,所以情况略有不同。我想从本地 Windows 机器复制一个文件,通过设置为两者之间网关的服务器。我应该能够通过中间服务器进行多跳。所以像这样:
A->B->C
我不想将文件复制到 B,然后登录 B 并再次复制文件。我希望能够对多个文件运行 pscp 以将其复制过来。
答案1
我发现最好的方法是先建立到中间服务器(图中的服务器 B)的隧道。然后通过此链接使用 pscp。我将逐步介绍我所做的操作。
1)在PuTTY中创建与服务器B的SSH连接
2)为此连接创建一个从端口 2222(您可以根据需要选择其他端口)到端口 22 的服务器 C 的隧道
3) 在 Windows 中打开命令窗口。导航到计算机上安装 PuTTY/pscp 的位置(如果路径上尚未安装)
4) 输入以下命令(用您自己的值替换 {} 中的值):
c:\putty> pscp -P 2222 -pw {myPasswordOnRemoteMachine} c:\dev\fileIWantToCopy.txt {myusername}@127.0.0.1:/tmp
5)在远程计算机C上,该文件应该位于/tmp目录中
答案2
我发现解决这个问题最简单的方法是根本不使用 pscp。只需使用温SCP将文件复制过去。
在会话页面中输入您的最终服务器地址(即问题中的服务器“C”)并选择SCP。
点击“高级...”。转到连接>隧道。在此处输入您的跳转服务器信息(即服务器“B”)。
现在只需使用您的密钥文件或密码登录即可进入。
答案3
我的情况更复杂:A -> B -> C -> D ->E
I used PuTTY and FileZilla
A my Windows machine,
B and C are gateways (very limited functionality)
D is the first Linux Machine and
E is the target Linux Machine
I use PuTTY to:
ssh into B (w/username password) (IP of B is predefined in PuTTY) then
ssh into C (w/username password) then manually
ssh into D (w/username password) then manually
ssh into E (at least this uses pubic key login so no uid/password!)
Once this is setup I then add tunnel to the IP of the final machine E in PuTTY thus:
L7777 172.123.124.125:22
OK now fire up FileZilla:
File > SiteManager:
Setup new connection to:
Host: 127.0.0.1 Port: 7777
Protocol SFTP
Ask for password...
Connect!