¿Qué podría causar que los comandos drush remotos fallen con errores ssh cuando ssh funciona en todos los demás casos?

10

Tengo claves ssh públicas y privadas en todos mis tres servidores (dev, UAT y producción) para poder iniciar sesión de forma remota o de uno a otro. Todo funciona perfectamente para los comandos sshy scp.

Sin embargo, no funciona para Drush. Si ejecuto drush @dev statusdesde UAT, por ejemplo, obtengo el banner del servidor que dice que el sistema "debe ser utilizado por usuarios autorizados solo bla, bla, bla ", y luego obtengo

Permiso denegado (clave pública, contraseña, teclado interactivo).

Mi ~/.drush/aliases.drushrc.phparchivo contiene:

# Development #
$aliases['dev'] = array(
  'uri' => 'http://default',
  'root' => '/var/www/vhosts/dev.www.company.com/current/',
  'remote-host' => 'companya0.company.com',
  'remote-user' => 'myusername'
);

# UAT #
$aliases['uat'] = array(
  'uri' => 'http://default',
  'root' => '/var/www/vhosts/uat.www.company.com/current/',
  'remote-host' => 'companyc6.company.com',
  'remote-user' => 'myusername'
);

# Production #
$aliases['prod'] = array(
  'uri' => 'http://default',
  'root' => '/var/www/vhosts/www.company.com/current/',
  'remote-host' => 'companyc1.company.com',
  'remote-user' => 'myusername'
);

SOLO Drush tiene algún problema al usar mis teclas ssh. ¿Qué podría estar evitando que funcione?

iconoclasta
fuente
3
Supongo que depende de qué usuario se esté ejecutando Drush. Si Drush está siendo ejecutado por www-data(por ejemplo), entonces sus claves SSH pueden estar equivocadas / no permitidas / no incluidas en la lista blanca.
Chapabu
44
Ejecute sus comandos drush con la opción -v o -s para ver el comando ssh exacto que Drush está generando para usted. Debe quedar claro a partir de eso cuál es la diferencia entre la invocación Drush de ssh y su prueba cli de la misma.
greg_1_anderson
@ Chapabu: Sí, tengo que usarlo sudoantes drushy parece que todo se está ejecutando como root (un agujero de seguridad del que he alertado al administrador del sistema). Parece que este es el problema. Actualmente estoy buscando una solución mientras espero el administrador del sistema ...
iconoclast

Respuestas:

19

Pon esta línea en tu archivo drushrc.php:

$options['ssh-options'] = '-o PasswordAuthentication=no -i /home/YOURUSERNAME/.ssh/id_rsa';

Esto hará que Drush pase estas opciones a ssh cada vez que llame a su sistema remoto, por lo que puede continuar llamando a Drush a través de sudo, y aún usar sus credenciales de usuario de inicio de sesión.

greg_1_anderson
fuente
Amigo, eres increíble ...
iconoclasta
Ejemplo para Windows: $ options ['ssh-options'] = '-o PasswordAuthentication = no -i C: \ users \ laptop1 \ .ssh \ id_rsa';
Bryan Jiencke
si se entiende correctamente, el directorio "/home/YOURUSERNAME/.ssh/id_rsa" es local donde se ejecuta el comando drush. El directorio "home / YOURUSERNAME" es el directorio $ HOME y id_rsa es la clave privada generada por ssh-keygen
letón el
1

Marque aquí: Cómo ejecutar Drush como Apache

Por lo que parece, ¡solo necesita cambiar el propietario / grupo para Drush en su servidor!

Chapabu
fuente
Esta podría ser la solución ideal ... pero tendré que lograr que el administrador del sistema esté de acuerdo antes de poder configurar las cosas de esta manera.
iconoclasta