通过双服务器跳转的 SFTP

通过双服务器跳转的 SFTP

我正在尝试找出一种方法,让我能够访问 SFTP 服务器上的文件,而我无法从本地计算机访问这些文件。目前,我必须通过 SSH 连接到远程服务器(它位于最终 SFTP 服务器将接受的某个 IP 块中),然后从那里通过 SFTP 连接到目标服务器。从那里,我找到get我感兴趣的文件,从而将它们放到中间服务器,从那里我可以通过 Samba 共享或直接获取文件scp。我也以相反的方式工作,我将文件放到中间人身上,通过 SSH 连接到它,然后通过 SFTP 连接到目的地并将put它们放入适当的文件夹中。

我的目标是缩短这个时间。不幸的是,我的机器是 Windows(我使用 KiTTy 和/或 Cygwin),我无法以任何方式修改中间服务器(或目标服务器)。我愿意使用命令行或 GUI 程序,只要它有效并且免费。

有任何想法吗?

答案1

本质上,没有 GUI 或其他便利设施:

ssh -o ProxyCommand='ssh myfirsthop nc -w 10 %h %p' mydestination

您可以通过编辑配置文件来将其设置为默认设置,默认情况下为 ~/.ssh/config

Host mydestination, mydest2, mydest3
ProxyCommand ssh myfirsthop nc -w 10 %h %p

这可以让你做到

ssh mydestination
scp mydest2:file.txt ./
scp file.txt mydest3:/tmp/

当然,有了这种魔法,你可以轻松地

mkdir -pv /tmp/mydest3tmp          # create mountpoint
sshfs mydest3:/tmp /tmp/dest3tmp/  # mount :)

在 Windows 上,您可以使用 WinSCP,它附带(我认为 IIRC)PLINK(来自 Putty 套件)。我猜 sshconfig文件的默认位置不同(我必须谷歌搜索),但我确信它的工作原理大致相同。

请注意,要使此功能正常工作,您只需要nc在中间服务器(第一跳)上使用“netcat()”。它是 linux/UNIX[1] 上随处可见的工具;如果您首先可以将其复制到那里,那么构建一个应该可以正常工作的静态链接版本是相当容易的。

[1] 请注意,由于存在一些不同的版本,因此可能需要删除 -w 选项或以不同的方式拼写

答案2

我不会将其设置为接受的答案,因为如果没有@sehe 和@Jakub,我永远也找不到它,但是我发现它可以简化一切......

WinSCP 具有使用内置 SSH 隧道的功能。我不知道这个功能是什么时候出现的,但不知为何我以前从未注意到它。

WinSCP 隧道设置

答案3

我的一个建议是使用 putty(从您的 Windows 框)创建一个 socks 代理,然后通过它代理您的 SFTP 客户端(例如 Filezilla sftp)。

您不需要做任何特别的事情,只需打开您的 putty socks5 代理,打开 filezilla,然后将您的文件通过 sftp 传输到目标服务器即可。

(you ==socks5 proxy==> middle server) ==> destination server

相关内容