【问题标题】:Bitbucket Pipeline read_passphrase: can't open /dev/tty: No such device or addressBitbucket Pipeline read_passphrase:无法打开 /dev/tty:没有这样的设备或地址
【发布时间】:2022-01-12 16:34:29
【问题描述】:

我有一个登台服务器和一个生产服务器,我运行相同的 Bitbucket 管道,我通过 SSH 发送一些命令。不幸的是,我的生产管道总是失败:

Host key verification failed.

我已经尝试了一切,文件夹权限,重新创建密钥,没有任何效果。

最后将-v 添加到我的ssh 通话中,我想我更近了一步,但仍然迷路。

在我的登台服务器上,我看到类似这样的内容:

debug1: Host '$STAGING_SERVER' is known and matches the RSA host key.   
debug1: Found key in /root/.ssh/known_hosts:4   
debug1: ssh_rsa_verify: signature correct

然后构建的其余部分完美无缺。

但是,在我的生产服务器上,我看到以下内容:

debug1: Host '$PRODUCTION_SERVER' is known and matches the RSA host key.
debug1: Found key in /root/.ssh/known_hosts:5
debug1: read_passphrase: can't open /dev/tty: No such device or address
debug1: permanently_drop_suid: 0
ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory
Host key verification failed.

所以它看起来像在我的生产服务器上找到的密钥 is,但由于某种原因,生产服务器上的 read_passphrase 正在被调用。我刚刚使用 no 密码创建了一个新的 id_rsa 和 id_rsa.pub 密钥,那么为什么我的生产服务器会尝试调用 read_passphrase?我在两台服务器上的 ssh_configsshd_config 是相同的 - 通过 diff 检查。

另一种看待它的方式是在登台服务器上立即调用ssh_rsa_verify,而在生产服务器上调用read_passphrase

这里的任何帮助将不胜感激,这让我发疯了!

【问题讨论】:

  • 您好,/dev/tty 在您的生产服务器中是否存在并可访问?你能比较两台服务器的 /dev/tty 设置吗?另外,您的服务器是否使用相同的 SSH 密钥进行连接?如果不是,您的生产 SSH 密钥在结构上是否正常?你也可以检查一下吗?
  • 所以 /dev/tty 在两台服务器上都不存在 - 但正如您在登台服务器中看到的那样,它甚至没有被检查,所以我不需要它。我感觉这是某种 SSH 设置调用 read_passphrase 但我不确定哪一个 - 正如我提到的 ssh_configsshd_config 是相同的(我刚刚与 diff 仔细检查过),是否存在我应该检查任何其他设置文件吗?
  • 至于 SSH 密钥,它们是不同的,但生产密钥是新生成的,所以我认为它是有效的......
  • 我想到的还有一件事是也许您可以尝试在生产中设置StrictHostKeyChecking=no,此外,为了超越假设,也许您可​​以尝试将新创建的生产ssh密钥分配给staging 并尝试与之建立联系,以确保有效性方面没有问题。
  • 那么我担心我会失去分期的工作流程:)。但我会试试这个StrictHostKeyChecking=no

标签: ssh ssh-keys bitbucket-pipelines


【解决方案1】:

哈利路亚!解决了! ?

因为最简单的原因浪费了时间......

我注意到在生产的ssh -v 的完整输出中,Bitbucket 正在打印如下内容:

debug1: Connecting to $PRODUCTION_SERVER [12.345.567.890] port 22.

暂存输出在哪里:

debug1: Connecting to $STAGING_SERVER [$STAGING_SERVER] port 22.

意味着静态 IP 该存储库变量的确切值。 (Bitbucket 将秘密日志解析出来,这就是它们以这种方式出现的原因)。

我意识到我将存储库变量 PRODUCTION_SERVER 错误地设置为 IP 地址的 别名(即 myserver.com),而实际上它应该是 IP 地址。将我的存储库变量中的该值更改为 IP 地址解决了这个问题!显然,使用别名并不能完全满足 SSH 的要求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    • 2021-06-29
    • 2020-08-16
    相关资源
    最近更新 更多