从 Windows 通过两层 SSH 复制文件

从 Windows 通过两层 SSH 复制文件

我工作的地方有一个登录服务器,然后我从该登录服务器登录到Linux机器。如,

ssh login@host

ssh computer_name

每次都提供身份验证。如果我使用我的笔记本电脑(不幸的是)运行 Vista,我会运行 putty 进入,login@host然后从它打开的终端登录到 computer_name。

我经常需要将本地文件从我的计算机获取到 Linux 机器上,反之亦然。通常我使用WinSCP传输到,login@hostname然后scp到computer_name,或者相反。但是,login@hostname存储空间非常有限,我无法通过这种方式获取更大的文件。有没有办法在computer_name和我的笔记本电脑之间直接传输文件?

答案1

设置一个端口为本地端口转发。对于 OpenSSH 这意味着:

$ ssh login@host -L 2222:computer_name:22

这会导致任何到端口的连接都2222localhost转发到via22上的端口computer_name- 这在这里很重要 - host。然后跟随

$ scp -P 2222 computer_name_user@localhost:remote local

显然这也允许您连接到computer_name

$ scp -p 2222 computer_name_user@localhost

PuTTY 能够进行端口转发(scp据我记得它也有),虽然它是一个出售的软件,但我实际上建议在 Cygwin 下使用 OpenSSH,因为这为您提供了事实上的标准 SSH界面(带有所有花里胡哨的功能)。

我无法快速找到清晰的重复项,但您可能想检查:

答案2

通过两层 SSH 执行操作的简单方法是隐藏中间层。

设置一个ProxyCommand这样您就可以直接ssh computer_name从原始客户端运行。设置公钥身份验证并激活代理转发(ForwardAgent yes在 中~/.ssh/config),这样您就不需要向中间计算机显式提供凭据。

现在可以ssh computer_name无缝工作,只需使用scprsync任何您喜欢的方式来复制文件即可。

相关内容