有没有办法通过跳转服务器与远程机器建立SFTP连接来传输文件?

Fel*_*ipe 5 ssh sftp sendfile

我想知道是否有一种方法可以通过跳转服务器使用 SFTP 将文件发送到远程计算机。如下图所示,首先需要 SSH 连接,然后是 SFTP 连接。

在此输入图像描述

我的主要问题出现在 SSH 连接之后,我的工作空间已更改,并且我无法检索成功执行 SFTP 所需的文件。我尝试过以下代码:

ssh jump-server-user@ip-jump-server 'echo "put /source/files /remote/files" | sftp -v remote-machine-user@ip-remote-machine'
Run Code Online (Sandbox Code Playgroud)

但这不起作用。

我尝试执行一个简单的命令,例如pwd使用 SFTP 连接,并且它有效,所以我认为这里的问题是工作区如何变化。

可能有一个更简单的解决方案,但我无法在跳转服务器-远程计算机连接上使用 SSH,并且无法将本地文件存储在跳转服务器中以便稍后将它们发送到远程计算机。

Mar*_*ryl 6

如果您本地有最新的 OpenSSH(至少 8.0),则可以使用-J(jump) 开关

sftp -J jump-server-user@ip-jump-server remote-machine-user@ip-remote-machine
Run Code Online (Sandbox Code Playgroud)

对于旧版本(但至少 7.3),您可以使用ProxyJump指令

sftp -o ProxyJump=jump-server-user@ip-jump-server remote-machine-user@ip-remote-machine
Run Code Online (Sandbox Code Playgroud)

还有其他选项,例如ProxyCommand端口转发,您甚至可以在旧版本的 OpenSSH 上使用它们。这些内容在OpenSSH 支持多跳登录吗?