可能重复:
将文件从远程复制到本地
以下工作按预期进行,我可以通过服务器 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”以获取更多信息。