首页 > 解决方案 > 脚本中从远程主机到本地服务器的 scp

问题描述

我已经能够找到很多服务器跳跃和 ProxyCommand 的示例,但没有一个与我的特定需求相关。

我想将文件从远程服务器传输到本地服务器。目前,我可以 ssh from localtojump和 from jumpto distant(不能直接从本地 ssh 到远程)。然后从distant我可以 scp 一个文件回到local. 现在我手动执行此操作:

来自本地:ssh userJ@jump

然后从跳转:ssh userD@distant

然后从远处:scp \path\file userL@local:\dest\path\

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

标签: shellsshcommand-linescp

解决方案


您是否必须将文件“推”distantlocal

local在from上简单地“拉”文件会更容易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 的代理转发来将凭据从localtojump和 finally传递distant。您只需要在代理转发工作之前jump和之前预先填充授权密钥。distant


推荐阅读