Qu'est-ce qui pourrait entraîner l'échec des commandes de nettoyage à distance avec des erreurs ssh lorsque ssh fonctionne dans tous les autres cas?


10

J'ai des clés ssh publiques et privées sur chacun de mes trois serveurs (dev, UAT et production) afin que je puisse me connecter à distance ou de l'un à l'autre. Tout fonctionne parfaitement pour les commandes sshet scp.

Cependant, cela ne fonctionne pas pour Drush. Si j'exécute à drush @dev statuspartir d'UAT, par exemple, j'obtiens la bannière du serveur disant que le système "doit être utilisé par des utilisateurs autorisés uniquement bla bla bla ", puis j'obtiens

Autorisation refusée (publickey, mot de passe, clavier interactif).

Mon ~/.drush/aliases.drushrc.phpdossier contient:

# 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'
);

SEULEMENT Drush a un problème avec mes clés ssh. Qu'est-ce qui pourrait l'empêcher de fonctionner?


3
Je suppose que cela dépend de quel utilisateur Drush est exécuté. Si Drush est exécuté par www-data(par exemple), vos clés SSH peuvent être incorrectes / interdites / non mises en liste blanche.
Chapabu

4
Exécutez vos commandes drush avec l'option -v ou -s pour voir la commande ssh exacte que Drush génère pour vous. Il devrait être clair à partir de cela quelle est la différence entre l'invocation Drush de ssh et votre test cli de la même chose.
greg_1_anderson

@Chapabu: Oui, je dois utiliser sudoavant drushet il semble que tout fonctionne en tant que root (un trou de sécurité dont j'ai alerté le sysadmin). Il semble que ce soit le problème. Je suis actuellement à la recherche d'une solution en attendant le sysadmin ...
iconoclast

Réponses:


19

Mettez cette ligne dans votre fichier drushrc.php:

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

Cela entraînera Drush à transmettre ces options à ssh chaque fois qu'il appelle votre système distant, vous pouvez donc continuer à appeler Drush via sudo et toujours utiliser vos informations de connexion utilisateur.


Mec tu es génial ...
iconoclaste

Exemple pour Windows: $ options ['ssh-options'] = '-o PasswordAuthentication = no -i C: \ users \ laptop1 \ .ssh \ id_rsa';
Bryan Jiencke

s'il est correctement compris, le répertoire "/home/YOURUSERNAME/.ssh/id_rsa" est local à l'endroit où la commande drush est exécutée. Le répertoire "home / YOURUSERNAME" est le répertoire $ HOME et id_rsa est la clé privée elle-même générée via ssh-keygen
letton

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.