使用 jumphost 从 Linux 到 Windows 机器的 scp

Scp from Linux to Windows machine using jumphost

下面的命令正在运行,我可以使用 .pub 文件从 jumphost 下载文件到我在 Windows 机器上的当前目录

scp -r -i user_202201281017.pub user@jumphost_ip_address:/home/user/check-job-status.sh .

截至目前,我正在使用 sftp 将文件复制到 jumphost 服务器,然后对我的 Windows 机器执行 scp。我想绕过 jumphost 并想使用第二跳将文件传输到 Windows 机器,如下命令

scp -r -i user_202201281017.pub user@jumphost_ip_address,user@file_present_at_original_server:/home/user/check-job-status.sh .

错误:

ssh: connect to host file_present_at_original_server port 22: Connection timed out

如果您有 OpenSSH 8.0 及更新版本,您可以使用 -J (jump) switch:

scp -r -i user_202201281017.pub -J user@jumphost_ip_address user@file_present_at_original_server:/home/user/check-job-status.sh .

对于旧版本,但至少是 7.3,使用 ProxyJump 指令:

scp ... -o ProxyJump=user@jumphost_ip_address

有关更多选项,请参阅 Does OpenSSH support multihop login?


使用 Windows 构建的 OpenSSH (Win32-OpenSSH),在任何情况下您都需要 the latest version,因为早期版本已经破坏了对跳转主机的支持。他们失败了:

CreateProcessW failed error:2 posix_spawn: No such file or directory