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_config
和 sshd_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 的完美匹配。
我遇到了同样的问题。我通过
解决了这个问题
转到 -> 存储库设置
转到 -> SSH 密钥(在左侧导航中)
在已知主机部分
输入您的 Bastion 主机 public IP 地址
然后点击获取按钮
重新运行您的管道
Please check this for reference
我有一个临时服务器和一个生产服务器,我 运行 相同的 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_config
和 sshd_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 的完美匹配。
我遇到了同样的问题。我通过
解决了这个问题转到 -> 存储库设置
转到 -> SSH 密钥(在左侧导航中)
在已知主机部分
输入您的 Bastion 主机 public IP 地址
然后点击获取按钮
重新运行您的管道
Please check this for reference