scp 从远程服务器到本地 ssh 到另一个远程服务器

scp 从远程服务器到本地 ssh 到另一个远程服务器

我目前在 serverB 上有一个文件,我想将其传输到我的本地计算机。为了到达 serverB,我首先 ssh 到 serverA,然后 ssh 到 serverB。 (例如 ssh @serverA 然后在 serverA 内 -> ssh @serverB)

不确定使用 scp 执行此操作的最佳方法是什么?

答案1

您可以使用ProxyJump中的选项~/.ssh/config。从man ssh

-J 目的地

首先创建一个连接到目标主机SSH连接到目的地描述的跳转主机,然后建立从那里到最终目的地的 TCP 转发。可以指定多个跳转,并用逗号分隔。这是指定一个的快捷方式代理跳转配置指令。请注意,命令行上提供的配置指令通常适用于目标主机,而不适用于任何指定的跳转主机。使用 ~/.ssh/config 指定跳转主机的配置。

例如,您的~/.ssh/config可能如下所示:

Host serverA
Port 22

Host serverB
Port 22
ProxyJump serverA

这将告知ssh始终连接到 serverB通过serverA,它会为普通sshscp.换句话说,您可以键入ssh serverBor scp serverB:big_file.txt .,它就会知道通过 ServerA 进行路由。 (但是,如果您使用公钥身份验证,则需要 serverB 所需密钥的本地副本。)

这就是常说的“跳转主机” ssh。中的相关配置选项~/.ssh/configProxyCommand.

答案2

一种方法是苦味素解决方案,还有其他方法。

  1. 如果您需要多次,最好sshfs使用服务器Ascp from local to serverA
  2. 如果您只需要一次,可以使用,ssh tunnel 请关注用于隧道掘进和sshfs
ssh to serverA
sshfs user@serverB:/foldertomount/ ~/mountpoint
scp ~/mountpoint/desiredFile LocalIP:/Path/

相关内容