sshpass 失败,退出代码为 6

Mar*_*tus 1 ssh

我的设置如下:

  • 节点A是我开始的地方
  • 节点B是网关机器
  • 节点C是目的地。

AB我已经设置了 SSH 公钥认证,但是从BC我不允许。

所以从节点A我使用以下咒语,它实际上在不同的机器(Ubuntu 14.04)上工作:

sshpass -p secretpass ssh -oProxyCommand="ssh -W %h:%p username@B" username@C
Run Code Online (Sandbox Code Playgroud)

……但是,当我从另一台机器(Ubuntu 16.04 - 尽管我怀疑这是否相关)从不同位置尝试时,调用会sshpass立即返回而没有任何类型的输出和退出代码(通过 获得echo $?)为 6。

更令人费解的是,如果我单独执行这些步骤,它们会成功:

A: $ ssh username@B   (directly access B without being prompted for password)
B: $ ssh username@C   (prompted for password, provided 'secretpass')
C: $                  (reached my destination)
Run Code Online (Sandbox Code Playgroud)

Mar*_*tus 7

好的,所以我想出了是怎么回事。因为我是第一次在这台机器上使用这个脚本,所以我必须首先执行以下操作(没有sshpass):

ssh -oProxyCommand="ssh -W %h:%p username@B" username@C
Run Code Online (Sandbox Code Playgroud)

然后我被提示:

主机'C <no hostip for proxy command>)' 的真实性无法建立。

RSA 密钥指纹是 SHA256:... 。

您确定要继续连接吗(是/否)?是的

警告:将“C”(RSA)永久添加到已知主机列表中

...一旦我接受了上述内容,我就可以使用我在问题中询问的咒语而不会出现其他问题。

所以这次失败是因为咒语无法回答只出现一次的真实性提示。