我已经能够找到许多服务器跳跃和ProxyCommand的示例,但都与我的特定需求无关。
我想将文件从远程服务器传输到本地服务器。目前,我可以从local
转换为jump
,从jump
转换为distant
(无法从本地直接转换为遥远)。然后,我可以从distant
将文件压缩回local
。现在,我手动执行此操作:
来自本地:ssh userJ@jump
然后从跳转:ssh userD@distant
然后从远处:scp \path\file userL@local:\dest\path\
但是我希望能够在从本地运行的脚本中执行此操作。我将rsh密钥存储在适当的位置,以消除密码提示。我只是无法弄清楚单个命令的语法。
最佳答案
您是否需要将distant
上的文件“推”回local
?
在local
上从distant
中简单地“拉”文件会更容易。
在~/.ssh/config
上设置local
:
[userL@local]# cat ~/.ssh/config
Host distant
HostName Distant
user userD
ProxyCommand ssh -A userJ@jump nc %h %p
使用ssh测试连接:
[userL@local]# ssh -A userD@distant [or even: ssh -A distant]
Last login: Tue Oct 23 16:05:59 2018 from jump
[userD@distant]#
现在从
distant
拉一个文件:[userL@local]# scp userD@distant:/distantpath/distantfile /localpath/localfile
distantfile 100% 129KB 128.9KB/s 00:01
[userL@local]#
在上面的示例中,我使用ssh的代理转发将凭据从
local
传递给jump
,最终传递给distant
。您只需要在jump
和distant
上预填充授权密钥,代理转发才能起作用。关于shell - 从脚本中的远程主机到本地服务器的scp,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52957513/