SSH 隧道将文件复制到远程服务器

SSH 隧道将文件复制到远程服务器

可能重复:
将文件从远程复制到本地

以下工作按预期进行,我可以通过服务器 A 将文件从服务器 B 复制到本地主机。

ssh [email protected] "ssh [email protected] "cat /home/shantanu/backup_all_data.sql.zip "" > /home/shantanu/backup_all_data.sql.zip

但是如何将文件从本地主机复制到服务器 B?

答案1

我发现最简单的方法是设置一个 ssh 代理命令,这样我就可以从我的工作站直接 ssh 到服务器 B,并通过服务器 A 反弹。

在我的工作站上的 .ssh/config 文件中,我添加了以下内容:

Host serverB
    ProxyCommand ssh serverA nc -q 0 IP_of_serverB 22

这意味着当您连接到名为“serverB”的主机时,它实际上会首先建立到 serverA 的 ssh 连接,然后运行“nc”(netcat),将所有流量转储到 IP_of_serverB 上的端口 22。

当您连接时,您首先与服务器 A 建立 ssh 代理连接(因此它会要求您输入服务器 A 的密码),然后它会与服务器 B 建立真正的 ssh 连接(因此它会要求您输入服务器 B 的密码)。

一旦成功,你就可以直接 scp 到 serverB,它将通过 serverA 进行代理

这要求您在 serverA 上安装工具“netcat”(/bin/nc)。如果您没有安装该工具,可能还有其他工具可供使用,请尝试在 Google 上搜索 ProxyCommand

您可以使用其他方式来构建该配置,使用 ssh_config 宏等等,但我发现上述格式是最可靠的。

如果服务器 A 和服务器 B 上的用户名不同,您也可以在配置文件中设置用户名。查看 ssh_config 手册页,并在 Google 中搜索“ssh ProxyCommand”以获取更多信息。

相关内容