脚本中从远程主机到本地服务器的 SCP



我已经能够找到很多服务器跳跃和代理命令的例子,但没有一个与我的特定需求有关。

我想将文件从远程服务器传输到本地服务器。目前,我可以从localjump和从jumpdistantssh(不能直接从本地到远距离ssh(。然后从distant我可以将文件搜索回local.现在我手动执行此操作:

从本地:ssh userJ@jump

然后从跳跃:ssh userD@distant

然后从远处:scp pathfile userL@local:destpath

但我希望能够在从本地运行的脚本中执行此操作。我将rsh密钥存储在适当的位置以消除密码提示。我只是无法弄清楚单个命令的语法。

您是否必须将distant上的文件"推送"回local

local上从distant简单地"拉取"文件会更容易。

local上设置~/.ssh/config

[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上预填充授权密钥。

我通常通过在~/.ssh/config文件中配置我的ssh客户端来自动执行跳转来解决此问题:

Host distant-jump
User userD
Hostname distant
ProxyCommand ssh -q -W %h:%p jump
Host jump
User userJ

然后你可以:scp distant-jump:/path/file ./

最新更新