我正在一台服务器上工作,我需要从另一台服务器进入该服务器。例子:
ssh [email protected]
ssh [email protected]
请注意,我无法login2
直接连接到,而只能从login1
.
每当我想要将文件从 传输login2
到我的计算机时,我首先必须将其从login2
传输到login1
,然后从 传输login1
到我的计算机。问题是login1
不能包含大于 1 GB 的文件(当login2
可以时),因此它是一个瓶颈。
我的问题是,有没有办法仍然login1
在我的计算机和 之间使用某种媒介login2
,并且仍然传输大于 1 GB 的文件?
谢谢。
答案1
您缺少的关键流行词是“跳转主机”,因为这就是您的登录名:一个小型网关,不应该执行任何控制您可以继续访问的位置的操作。
鉴于足够新的时间ssh
,你应该能够做到
scp -o [email protected] [email protected]:/pth/to/file /pth/to/dest
在较旧的 ssh 客户端上,它将是
scp -o proxycommand=“ssh [email protected] -W %h:%p” [email protected]:/pth/to/src /pth/to/tg
在这两种情况下,连接都将打开login1
并通过隧道传输至login2
。 (这可能要求您在 上使用代理转发或密码身份验证login2
,即 上没有私钥login1
。)
无论哪种情况,一旦您确认它有效,您就可以将该选项粘贴到您的~/.ssh/config
位置,如下所示:
host login2.de
ProxyJump [email protected]
# ProxyCommand ssh [email protected] -W %h:%p
然后您的 ssh 连接将login2
始终使用跳转主机,无需-o proxy...
在命令行上显式显示。
答案2
通过本地服务器登录login1.de
服务器并执行以下操作。ssh
scp -3 [email protected]:/file user@mylocal:/path/to/transfer
这会将scp
流量从 server2 通过 server1 路由到本地服务器。