es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Bitbucket Pipeline read_passphrase: no se puede abrir /dev/tty: No hay tal dispositivo o dirección

Tengo un servidor de preparación y un servidor de producción, y ejecuto las mismas Pipelines de Bitbucket, donde envío algunos comandos a través de SSH. Desafortunadamente, mi pipeline para la producción siempre falla con:

La verificación de la clave del host ha fallado.

He intentado de todo, permisos de carpeta, recrear las claves, nada funciona.

Finalmente, al agregar -v a mi llamada de ssh, creo que estoy un paso más cerca, pero aún estoy perdido.

En mi servidor de preparación, veo algo como esto:

debug1: El host '$STAGING_SERVER' es conocido y coincide con la clave del host RSA.
debug1: Clave encontrada en /root/.ssh/known_hosts:4
debug1: ssh_rsa_verify: firma correcta

y el resto de la compilación sigue sin problemas.

Sin embargo, en mi servidor de producción, veo lo siguiente:

debug1: El host '$PRODUCTION_SERVER' es conocido y coincide con la clave del host RSA.
debug1: Clave encontrada en /root/.ssh/known_hosts:5
debug1: read_passphrase: no se puede abrir /dev/tty: No existe el dispositivo o la dirección
debug1: permanently_drop_suid: 0
ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory
La verificación de la clave del host ha fallado.

Así que parece que la clave está encontrada en mi servidor de producción, pero por alguna razón en el servidor de producción se está llamando a read_passphrase. Acabo de crear una nueva clave idrsa y idrsa.pub, sin contraseña, entonces ¿por qué demonios mi servidor de producción está tratando de llamar a read_passphrase? Mi ssh_config y sshd_config en ambos servidores son idénticos, verificados a través de diff.

Otra forma de verlo es que ssh_rsa_verify se llama inmediatamente en el servidor de preparación, mientras que en el servidor de producción se llama a read_passphrase.

Cualquier ayuda aquí sería muy apreciada, ¡esto me está volviendo loco!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en la solicitud de frase de paso en el servidor de producción. Dado que creaste las nuevas claves sin frase de paso, el servidor no debería solicitar una.

    Una posible solución es agregar la opción -o BatchMode=yes a tu llamada de ssh en el Bitbucket Pipeline. Esto desactivará cualquier solicitud de frase de paso y permitirá que se ejecute el pipeline sin problemas.

    Otra posible solución es verificar los permisos de tu archivo known_hosts en el servidor de producción. Es posible que el archivo no sea legible por el usuario que ejecuta el pipeline, lo que podría causar el error de “Verificación de clave de host fallida”. Asegúrate de que el archivo tenga los permisos correctos y sea legible por el usuario.

    Si ninguna de estas soluciones funciona, puede valer la pena revisar nuevamente el archivo sshd_config en el servidor de producción para asegurarte de que no haya diferencias con el servidor de preparación. Es posible que haya una diferencia de configuración que esté causando que aparezca la solicitud de frase de paso.

    En resumen, es importante asegurarse de desactivar la solicitud de frase de paso y de que el archivo known_hosts sea legible para el usuario del pipeline.

Comments are closed.