Bitbucket 管道 read_passphrase: 无法打开 /dev/tty: 没有这样的设备或地址

Bitbucket Pipeline read_passphrase: can't open /dev/tty: No such device or address

我有一个临时服务器和一个生产服务器,我 运行 相同的 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.

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

检查

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

如有任何帮助,我们将不胜感激,这让我发疯!

哈利路亚!解决了!

最简单的原因浪费了几个小时...

我在 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 的完美匹配。

我遇到了同样的问题。我通过

解决了这个问题
  1. 转到 -> 存储库设置

  2. 转到 -> SSH 密钥(在左侧导航中)

  3. 在已知主机部分

  • 输入您的 Bastion 主机 public IP 地址

  • 然后点击获取按钮

  • 重新运行您的管道

Please check this for reference