capristano - Implementación de servidor múltiple: pidiendo contraseña de ssh para cada servidor
github capistrano (2)
Estoy configurando Capifony (Capistrano para Symfony) pero tengo un problema con la contraseña de ssh cuando pruebo la implementación de múltiples servidores.
Aquí algunas versiones:
daniel@fiji:~$ ruby --version
ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]
daniel@fiji:~$ cap --version
Capistrano v2.9.0
daniel@fiji:~$ uname -a
Linux fiji 3.0.0-13-generic-pae #22-Ubuntu SMP Wed Nov 2 15:17:35 UTC 2011 i686 i686 i386 GNU/Linux
Y algunas configuraciones de deploy.rb:
set :domain, "mydomain"
...
set :user, "sshuser"
set :password, "sshpassword"
...
role :web, domain
role :app, domain
...
Desplegar en un solo servidor funciona muy bien, no es necesario ingresar contraseñas. Todo muy bien. Pero si trato de agregar más servidores a la configuración (tendré que implementar de 6 a 9 máquinas) con una configuración como esta:
...
set :user, "sshuser"
set :password, "sshpassword"
role :web, "ipaddr1", "ipaddr2"
role :app, "ipaddr1", "ipaddr2"
...
Capistrano comienza a preguntarme la contraseña de SSH para cada servidor enumerado, incluso si está configurado como antes ... ¿Qué hay de malo con esta configuración? Ingresar la contraseña permite que el proceso continúe y todo funciona, pero me gustaría evitar ingresar la contraseña cada vez.
Gracias Daniel
De acuerdo con los usuarios más experimentados, puedo decir que el uso de la contraseña para la autenticación ssh no es una buena práctica. Es mucho mejor usar claves ssh y confiar en ellas. Solo necesito quitar la fila
set :password, "sshpassword"
y, obviamente, configurar las claves públicas en cada servidor donde implementar.
No veo por qué capistrano te sigue pidiendo tu contraseña. Sin embargo, una forma de resolver este problema es utilizar la autenticación de clave pública, que también se sugiere en la wiki de capistrano. (mira este tutorial para ver un ejemplo de cómo configurar esto)
En breve:
- Generas una clave usando
ssh-keygen -t rsa -C "youremail"
- Copia la clave pública al host remoto
scp -p .ssh/id_rsa.pub remoteuser@remotehost:
- Agregue la clave pública al archivo de claves autorizadas en el servidor:
cat id_rsa.pub >> ~/.ssh/authorized_keys
. (Puede necesitar crear el directorio .ssh)
Después de eso, solo deberá ingresar su contraseña una vez y no necesitará tener su contraseña codificada en su archivo deploy.rb.