Obligar a Capistrano a pedir contraseña

Obligar a Capistrano a pedir contraseña

Estoy implementando Capistrano en un nuevo servidor y tengo el siguiente problema. Actualmente, no puedo agregar una clave SSH al servidor para iniciar sesión, por lo que debo utilizar la autenticación con contraseña. Sin embargo, tengo una clave para otro servidor guardada en .sshel directorio de mi cuenta de usuario local.

Este es el error que aparece cuando intento iniciar sesión:

C:\Web\WebApp1>cap deploy:setup
  * executing `deploy:setup'
  * executing "mkdir -p /home2/webapp1 /home2/webapp1/releases /home2/webapp1/shared /home2/webapp1/shared/system /home2/webapp1/shared/log /home2/webapp1/shared/pids"
    servers: ["myserver.example.com"]

connection failed for: myserver.example.com (OpenSSL::PKey::PKeyError: not a public key "C:/Users/MyAccount/.ssh/id_rsa.pub")

¿Cómo puedo hacer que Capistrano ignore la existencia de la clave que tengo y me permita iniciar sesión con una contraseña? Intenté agregar set :password, "myp@ssw0rd"y deploy.rbno ayudó.


ACTUALIZAR

Seguí la respuesta de @sysadmin1138 para agregar lo siguiente al archivo de configuración ssh:

HostName myserver.example.com
    PreferredAuthentications=password
    PubkeyAuthentication=no

Ahora me sale el error:

connection failed for: myserver.example.com (Net::SSH::AuthenticationFailed: webappuser)

Aunque ni siquiera pide la contraseña. Cuando intenté especificar la contraseña en el archivo de configuración, todavía aparecía el mismo error.


Aquí están las partes relevantes de mi configuración de Capistrano:

role :web, "myserver.example.com"

set :user, "webappuser"
default_run_options[:pty] = true # Allow Capistrano to prompt for passwords

set :deploy_to, "/home2/webapp1"

Respuesta1

Esto probablemente se pueda resolver fuera de Capistrano y en el propio SSH. Configurando un archivo ~/.ssh/config y creando una entrada para su host:

HostName myserver.example.com
    PreferredAuthentications=keyboard-interactive
    PubkeyAuthentication=no

Capistrano definitivamente solicitará una contraseña si no hay una clave presente, lo he hecho.

Respuesta2

Después de leer el código de Net::SSH::KeyManager, encontré el problema.

En esta máquina, tengo una clave pública llamadaid_rsa.pub sinla clave privada correspondiente id_rsa(porque uso id_rsa.ppkque es la versión PuTTY del archivo de clave).

Net::SSH::KeyManager, sin embargo, sólo utilizará una clave siamboslos archivos públicos y privados están en el directorio. Desafortunadamente, esto también significa que si encuentra una clave pública sin la clave privada (o una clave privada sin la clave pública), inmediatamente generará una excepción, en lugar de simplemente descartar la clave.

Después de usar PuTTYgen para exportar la clave privada del .ppkarchivo a un archivo OpenSSH estándar (y luego modifiqué ese archivo de acuerdo conesta respuesta), pude conectarme usando autenticación de contraseña (sinnecesitando el archivo ssh/config como se muestra en otra respuesta).


Nota: Creo que esto es un error en la gema OpenSSH. Tener una clave no válida no debería impedirle utilizar una clave o contraseña diferente.

información relacionada