我正在尝试找出一种方法,允许我访问 SFTP 服务器上的文件,而不是无法从本地计算机访问。目前,我必须通过 SSH 连接到远程服务器(它位于最终 SFTP 服务器将接受的某个 IP 块中),然后从那里 SFTP 到目标服务器。从那里,我找到get
我感兴趣的文件,从而将它们放到中间人服务器上,从中我可以通过 Samba 共享或直接使用scp
. 我也反过来工作,我将文件放到中间人上,通过 SSH 连接到它,然后通过 SFTP 连接到目的地,然后将put
它们放入适当的文件夹中。
我的目标是缩短这个时间。不幸的限制是我的机器是 Windows(我使用 KiTTy 和/或 Cygwin)并且我不能以任何方式修改中间人服务器(或目标服务器)。我愿意使用命令行或 GUI 程序,只要它可以工作并且是免费的。
有任何想法吗?
seh*_*ehe 26
本质上,没有 GUI 或其他便利:
ssh -o ProxyCommand='ssh myfirsthop nc -w 10 %h %p' mydestination
Run Code Online (Sandbox Code Playgroud)
您可以通过编辑配置文件使其成为默认值,默认情况下 ~/.ssh/config
Host mydestination, mydest2, mydest3
ProxyCommand ssh myfirsthop nc -w 10 %h %p
Run Code Online (Sandbox Code Playgroud)
这然后允许你做
ssh mydestination
scp mydest2:file.txt ./
scp file.txt mydest3:/tmp/
Run Code Online (Sandbox Code Playgroud)
当然,有了这种魔法,你就可以轻松地
mkdir -pv /tmp/mydest3tmp # create mountpoint
sshfs mydest3:/tmp /tmp/dest3tmp/ # mount :)
Run Code Online (Sandbox Code Playgroud)
在 Windows 上,你会使用 WinSCP,它带有(我认为是 IIRC)PLINK(来自 Putty 套件)。我想 sshconfig
文件的默认位置是不同的(我必须用谷歌搜索它),但我确信它的工作原理或多或少是一样的。
请注意,要使其工作,您唯一需要的是nc
中间服务器(第一跳)上的“netcat ( )”。它是 linux/UNIX[1] 上无处不在的工具;如果您可以首先将其复制到那里,那么构建一个应该可以工作的静态链接版本非常容易。
[1] 请注意,有一些风味,因此 -w 选项可能需要删除/拼写不同
jos*_*row 10
我不会将其设置为已接受的答案,因为如果没有 @sehe 和 @Jakub,我永远不会找到它,但这是我发现的简化一切的东西......
WinSCP 能够使用内置的 SSH 隧道。我不知道这个功能什么时候出现,但我以前从未注意到它。