背景信息: 服务器 A 需要向服务器 B 发送数据,但我不允许在它们之间的防火墙中打开任何其他端口。有一个ssh端口打开,所以我选择通过ssh隧道发送数据。但是,我现在也需要将文件从 A 复制到 B。
问题: 如果我通过现有的 ssh 隧道将文件从 A 传输到 B,这些文件是否会被加密两次?或者 scp 是否“足够聪明”来利用现有的隧道?
如果可能的话,我想避免加密两次的额外开销。
还有其他方法通过 ssh 隧道发送文件吗?
不确定双重加密(我猜是的),但为什么使用
scp
而不是 ssh tunnel
? scp
使用 ssh 连接,因此防火墙等没有问题。
如果您正在寻找替代方案,您可以使用
rsync
而不是 ssh
,如下所示:
rsync -avz -e ssh /home/me myname@servername:/some/folder
希望这有帮助。
假设您有一个远程服务器 Remy。 Remy 有 sshd 服务,但所在网络无法路由新连接,但 Remy 仍然可以访问互联网。
假设您有另一个(可能是本地)服务器 Loco,Loco 可以在其中接收新的传入连接。
因此,Remy 配置为使用
ssh -R 2201:localhost:22 Loco
建立到 Loco 的 ssh 隧道,以便 Loco 可以通过 ssh 隧道 ssh 远程访问 Remy。
现在,在 Loco 中,如果您使用 scp 或 rsync 或任何其他实用程序,当从 Loco - PUSH 启动时,它将对该连接进行双重加密。这是加密两次(通过 sshtunnel ssh)
------ <-- ssh -R 2201:localhost:22 Loco ------
---------- ssh localhost:2201 --> -----------
====== file transfer PUSH >> ==============
---------------------------------------------
-----------------------------------------------
解决这个问题的一种方法是通过 Loco 远程进入 Remy,然后通过 scp/rsync/从 Remy 远程到 Loco 的公共互联网地址 - PULL。这将建立一个与 sshtunnel 分离的新 ssh 会话,其中连接仅加密一次。
------ <-- ssh -R 2201:localhost:22 Loco ------
---------- ssh localhost:2201 --> -----------
---------------------------------------------
-----------------------------------------------
-------------- <-- ssh Loco -------------------
====== file transfer PULL >> ==============
-----------------------------------------------
解决此问题的可能不太安全的方法是在 Remy 上拥有一个非加密(ftp)服务,该服务仅侦听本地主机,并将该端口包含在 sshtunnel 配置 `ssh -R 2201:localhost:22 -R 2101:localhost: 21 洛科'。然后在 Loco 上,您可以 ftp 到 localhost:2101,通过 sshtunnel 将文件发送到 Remy。
------ <-- ssh -R 2201:localhost:22 Loco ------
====== ftp file transfer >> ===============
-----------------------------------------------