我需要从服务器 A 复制一个文件,我只能先连接到服务器 B 才能访问该文件

I need to copy a file from server A that I can only access by first connecting to server B

我需要从服务器复制一个文件(~9 gigs),我们称它为服务器 B。我只能先连接到服务器 A 才能通过 ssh 进入服务器 B。我正在尝试使用 scp 复制文件到我当地的 machine。我只是想先使用 scp 将文件复制到服务器 A,然后再复制到我的本地 machine - 不幸的是,虽然只有半个磁盘 space 可供我使用在服务器A上。有没有办法直接从服务器B复制它?我无法使用 ssh 直接从我的计算机连接到服务器 B。我在 mac.

上使用终端

如果您的计算机和跳转主机(服务器 A)都是 运行 OpenSSH v7.3 或更高版本,您可以使用 ProxyJump 选项自动执行此操作:

scp -oProxyJump=userA@serverA userB@serverB:remoteFile localDest

它的作用是打开到服务器 A 的 SSH 连接,然后通过该连接建立从本地计算机到服务器 B 的 SSH (/scp) 连接,然后通过该连接传输文件。请注意,它会在连接时要求输入两个密码:首先是 serverA,然后是 serverB。

您还可以通过在您的计算机 (~/.ssh/config) 上创建一个 ssh 配置文件并创建如下所示的条目来自动执行此操作:

Host serverB
    ProxyJump userA@serverA

...它告诉 ssh(和 scp)在您请求连接到 serverB 时自动执行 ProxyJump。有关详细信息,请参阅 OpenSSH docs on the config file

如果您在两台计算机上都没有足够新的 OpenSSH,但 netcat(或 nc 或类似的东西)在服务器 A 上可用,您可能也可以通过以下方式获得相同的效果ProxyCommand 选项。参见 this superuser question