我工作的地方有一个登录服务器,然后我从该登录服务器登录到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
这会导致任何到端口的连接都2222
被localhost
转发到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
无缝工作,只需使用scp
或rsync
任何您喜欢的方式来复制文件即可。