Cosa potrebbe causare il fallimento dei comandi di Drush remoto con errori ssh quando ssh funziona in tutti gli altri casi?


10

Ho chiavi ssh pubbliche e private su tutti e tre i miei server (sviluppo, UAT e produzione) in modo da poter accedere da remoto o da uno all'altro. Tutto funziona perfettamente per i comandi sshe scp.

Esso non funziona, tuttavia, per Drush. Se eseguo drush @dev statusda UAT, ad esempio, ottengo il banner del server che dice che il sistema deve "essere utilizzato solo da utenti autorizzati blah blah blah ", e quindi ottengo

Autorizzazione negata (chiave pubblica, password, tastiera interattiva).

Il mio ~/.drush/aliases.drushrc.phpfile 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 ha qualche problema con i miei tasti ssh. Cosa potrebbe impedirgli di funzionare?


3
Immagino che dipenda da quale utente Drush viene eseguito. Se Drush è gestito da www-data(ad esempio), le chiavi SSH potrebbero essere errate / non consentite / non autorizzate.
Chapabu,

4
Esegui i comandi drush con l'opzione -v o -s per vedere l'esatto comando ssh che Drush sta generando per te. Dovrebbe essere chiaro da ciò che la differenza è tra l'invocazione Drush di ssh e il test cli dello stesso.
greg_1_anderson,

@Chapabu: Sì, devo usare sudoprima drushe sembra che tutto funzioni come root (una falla di sicurezza di cui ho avvisato l'amministratore di sistema). Sembra che questo sia il problema. Attualmente sto cercando una soluzione mentre aspetto il sysadmin ...
iconoclast

Risposte:


19

Inserisci questa riga nel tuo file drushrc.php:

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

Questo farà sì che Drush passi queste opzioni su ssh ogni volta che chiama il tuo sistema remoto, così puoi continuare a chiamare Drush tramite sudo e usare ancora le tue credenziali utente di accesso.


Amico, sei fantastico ...
iconoclast

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

se capito correttamente, la directory "/home/YOURUSERNAME/.ssh/id_rsa" è locale dove viene eseguito il comando drush. La directory "home / YOURUSERNAME" è la directory $ HOME e id_rsa è la chiave privata stessa generata tramite ssh-keygen
lettone,

1

Controlla qui: Come eseguire Drush come Apache

A quanto pare, devi solo cambiare il proprietario / gruppo per Drush sul tuo server!


Questa potrebbe essere la soluzione ideale ... ma dovrò far concordare il sysadmin prima di poter impostare le cose in questo modo.
iconoclasta,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.