我的 scp 没有 proxyjump 选项

Mos*_*oli 5 ssh scp

我想scp通过另一个主机 (B) 将文件传输到主机 (C)。我可以使用以下命令:

scp -oProxyCommand="ssh -W %h:%p B" thefile C:destination
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但这个不起作用:

scp -oProxyJump=B thefile C:destination
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

command-line: line 0: Bad configuration option: proxyjump
Run Code Online (Sandbox Code Playgroud)

我检查了scp手册(man scp)。我的scp命令没有ProxyJump选项,但有ProxyCommand选项。我更新了,openssh-client但没有帮助。

有人知道原因吗?

Jak*_*uje 6

您有不支持该ProxyJump选项的旧 OpenSSH 版本。它是在OpenSSH 7.3中引入的,因此如果您需要使用它,则需要获取此版本或更新版本(您的发行版可能未提供它)。

但正如已经说过的,您可以ProxyJump使用ProxyCommand(如原始问题中指出的那样)重写每个命令:

Host C
  ProxyCommand ssh -W %h:%p B
Run Code Online (Sandbox Code Playgroud)


小智 4

如果您经常通过跳转服务器将文件复制到此目标,您可以通过在客户端 ~/.ssh/config 中创建一个条目来减少输入:

Host C
  User dest_user1
  Hostname 5.6.7.8
  ProxyCommand  ssh user_on_B@B nc %h %p 2> /dev/null
Run Code Online (Sandbox Code Playgroud)

有了这个,您就可以scp thefile C:destination:上例中的主机名“5.6.7.8”可以替换为仅对跳转服务器可见的某些机器IP或名称(即:没有全局DNS条目)

  • 不要使用netcat。它可能未安装在代理主机上。按照我的回答使用“-W”。 (2认同)