我正在尝试将文件从远程服务器复制到本地服务器,但是,我的远程服务器首先要求我连接到中间主机,然后从那里跳转到实际服务器。我想知道如何使用这种跳跃技术使用 scp 命令将文件从远程服务器复制到本地计算机?
所以首先我必须连接到中间服务器,然后从那里我想连接到我的实际服务器。
答案1
对于现代版本的 ssh,使用 a 的概念非常容易,ProxyJump
至少如果您设置了密钥的话。
我们将这 3 台机器称为 L、I 和 R(分别表示本地、中间和远程)。假设一开始用户名都是相同的。
那么所需的命令是
scp -oProxyJump=I R:remote_file localfile
如果用户名不同,则将 I 替换为user@I
,将 R 替换为user@R
。
如果您使用 ssh,命令将是:
ssh -J [user@]I [user@]R
答案2
您可以通过编辑 ssh 配置以包含代理来完成此操作。 scp 使用 ssh 进行远程连接,因此只需编辑 ssh 配置就可以了。使用您的“中间服务器”作为代理。
将这样的内容添加到您的~/.ssh/config
文件中:
Host target.machine
User targetuser
HostName target.machine
ProxyCommand ssh [email protected] nc %h %p 2> /dev/null
scp
然后就像直接连接到远程服务器一样使用。
为了给予应得的信任,我把这个来自这里。