我已经看到很多scp
通过操作员通过中间服务器到第二跳服务器的示例ProxyCommand
,例如:
A:/infile.txt -> B -> C:/outfile.txt
A 中的内容类似于以下内容:
scp -o 'ProxyCommand ssh userB@hostB nc %h %p' infile.txt userC@hostC:"~/outfile.txt"
我的问题,是如何scp
通过两个中间服务器到达第三跳服务器,以便:
A:/infile.txt -> B -> C -> D:/outfile.txt
我正在寻找一种方法来做到这一点使用单行类似于上面提供的第二跳示例......但如果不可能的话,所有答案和方法都是有效的。
我想做的与通过多个主机的 SCP或其变体,使用 /etc/ssh/ssh_config 文件来设置别名。这不是我想做的,我只是在寻找一句台词。我还没有看到起点和目的地之间有两个或多个代理主机的任何示例,所以我相信这个问题是非常有效的。
答案1
新的openssh
7.3 提供了一个开关-J
,允许您创建所需的单行:
scp -oProxyJump=userB@hostB,userC@hostC infile.txt userD@hostD:"~/outfile.txt"
从手册页:
代理跳转
指定一个或多个跳转代理作为
[user@]host[:port]
。可能有多个代理用逗号字符分隔并将依次访问。设置此选项将导致 ssh(1) 连接到目标主机,方法是首先与指定的 ProxyJump 主机建立 ssh(1) 连接,然后建立从那里到最终目标的 TCP 转发。