Was kann dazu führen, dass Remote-Drush-Befehle mit SSH-Fehlern fehlschlagen, wenn SSH in allen anderen Fällen funktioniert?

10

Ich habe öffentliche und private SSH-Schlüssel auf allen meinen drei Servern (Entwickler, UAT und Produktion), damit ich mich remote oder von einem zum anderen anmelden kann. Alles funktioniert perfekt für die sshund scpBefehle.

Bei Drush funktioniert es jedoch nicht . Wenn ich drush @dev statuszum Beispiel von UAT ausführe , erhalte ich das Banner des Servers, auf dem steht, dass das System "nur von autorisierten Benutzern verwendet werden soll, bla bla bla ", und dann bekomme ich

Berechtigung verweigert (öffentlicher Schlüssel, Passwort, tastaturinteraktiv).

Meine ~/.drush/aliases.drushrc.phpDatei enthält:

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

NUR Drush hat Probleme mit meinen SSH-Schlüsseln. Was könnte verhindern, dass es funktioniert?

Bilderstürmer
quelle
3
Ich denke, es hängt davon ab, von welchem ​​Benutzer Drush ausgeführt wird. Wenn Drush www-data(zum Beispiel) ausgeführt wird, sind Ihre SSH-Schlüssel möglicherweise falsch / nicht zulässig / nicht auf der Whitelist.
Chapabu
4
Führen Sie Ihre Drush-Befehle mit der Option -v oder -s aus, um den genauen ssh-Befehl anzuzeigen, den Drush für Sie generiert. Daraus sollte klar sein, was der Unterschied zwischen dem Drush-Aufruf von ssh und Ihrem Cli-Test desselben ist.
Greg_1_anderson
@Chapabu: Ja, ich muss sudovorher verwenden drushund es scheint, dass alles als root ausgeführt wird (eine Sicherheitslücke , über die ich den Systemadministrator informiert habe). Es scheint, dass dies das Problem ist. Ich bin derzeit auf der Suche nach einer Lösung, während ich auf den Systemadministrator warte ...
Bilderstürmer

Antworten:

19

Fügen Sie diese Zeile in Ihre Datei drushrc.php ein:

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

Dies führt dazu, dass Drush diese Optionen bei jedem Aufruf Ihres Remote-Systems an ssh weiterleitet, sodass Sie Drush weiterhin über sudo aufrufen und weiterhin Ihre Anmeldeinformationen verwenden können.

greg_1_anderson
quelle
Alter, du bist großartig ...
Bilderstürmer
Beispiel für Windows: $ options ['ssh-options'] = '-o PasswordAuthentication = no -i C: \ Benutzer \ Laptop1 \ .ssh \ id_rsa';
Bryan Jiencke
Bei korrektem Verständnis befindet sich das Verzeichnis "/home/YOURUSERNAME/.ssh/id_rsa" lokal dort, wo der Drush-Befehl ausgeführt wird. Das Verzeichnis "home / YOURUSERNAME" ist das Verzeichnis $ HOME und id_rsa ist der private Schlüssel, der selbst über ssh-keygen generiert wurde
lettisch
1

Überprüfen Sie hier: So führen Sie Drush als Apache aus

Laut Sound müssen Sie nur den Eigentümer / die Gruppe für Drush auf Ihrem Server ändern!

Chapabu
quelle
Dies könnte die ideale Lösung sein ... aber ich muss den Systemadministrator dazu bringen, zuzustimmen, bevor ich die Dinge auf diese Weise einrichten kann.
Bilderstürmer