我已经能够找到许多服务器跳跃和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。您只需要在jumpdistant上预填充授权密钥,代理转发才能起作用。

关于shell - 从脚本中的远程主机到本地服务器的scp,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52957513/

10-13 03:29