Co może spowodować, że zdalne polecenia drush nie będą działać z błędami ssh, gdy ssh działa we wszystkich innych przypadkach?

10

Mam publiczne i prywatne klucze ssh na wszystkich moich trzech serwerach (programistycznym, UAT i produkcyjnym), dzięki czemu mogę logować się zdalnie lub z jednego do drugiego. Wszystko działa idealnie dla poleceń sshi scp.

Nie działa to jednak w przypadku Drusha. drush @dev statusNa przykład, jeśli wykonam z UAT, dostaję sztandar serwera z informacją, że system ma być „używany tylko przez autoryzowanych użytkowników bla bla bla

Odmowa dostępu (klucz publiczny, hasło, klawiatura interaktywna).

Mój ~/.drush/aliases.drushrc.phpplik zawiera:

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

TYLKO Drush ma problem z używaniem moich kluczy ssh. Co może przeszkadzać w jego działaniu?

ikonoklasta
źródło
3
Myślę, że to zależy od tego, z którego użytkownika Drush jest uruchamiany. Jeśli Drush jest uruchamiany www-data(na przykład), twoje klucze SSH mogą być niepoprawne / zabronione / nie umieszczone na białej liście.
Chapabu,
4
Uruchom polecenia drush z opcją -v lub -s, aby zobaczyć dokładne polecenie ssh generowane przez Drusha. Powinno być jasne, jaka jest różnica między wywołaniem Drsh przez ssh a twoim testem cli tego samego.
greg_1_anderson
@Chapabu: Tak, muszę użyć sudowcześniej drushi wydaje się, że wszystko działa jako root (dziura w zabezpieczeniach, o której powiadomiłem sysadmin). Wygląda na to, że to jest problem. Obecnie szukam rozwiązania , czekając na sysadmin ...
iconoclast

Odpowiedzi:

19

Umieść tę linię w pliku drushrc.php:

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

Spowoduje to, że Drush przekaże te opcje ssh za każdym razem, gdy zadzwoni do twojego zdalnego systemu, dzięki czemu będziesz mógł nadal dzwonić do Drusha przez sudo i nadal używać danych logowania użytkownika.

greg_1_anderson
źródło
Koleś, jesteś niesamowity ...
iconoclast
Przykład dla systemu Windows: $ options ['ssh-options'] = '-o PasswordAuthentication = no -i C: \ users \ laptop1 \ .ssh \ id_rsa';
Bryan Jiencke
jeśli poprawnie zrozumiany, katalog „/home/YOURUSERNAME/.ssh/id_rsa” jest lokalny w miejscu wykonywania polecenia drush. Katalog „home / YOURUSERNAME” to katalog $ HOME, a id_rsa to klucz prywatny wygenerowany przez ssh-keygen
łotewski
1

Sprawdź tutaj: Jak uruchomić Drusha jako Apache

Po prostu musisz zmienić właściciela / grupę Drush na swoim serwerze!

Chapabu
źródło
To może być idealne rozwiązanie ... ale muszę sysadmin się zgodzić, zanim będę mógł skonfigurować rzeczy w ten sposób.
iconoclast