Apa yang dapat menyebabkan perintah remote drush gagal dengan kesalahan ssh ketika ssh bekerja dalam semua kasus lainnya?


10

Saya memiliki kunci ssh publik dan pribadi di ketiga server saya (dev, UAT, & produksi) sehingga saya dapat masuk dari jarak jauh, atau dari satu ke yang lain. Semuanya bekerja dengan sempurna untuk sshdan scpperintah.

Namun, itu tidak berhasil untuk Drush. Jika saya mengeksekusi drush @dev statusdari UAT, misalnya, saya mendapatkan spanduk server yang mengatakan sistemnya "untuk digunakan oleh pengguna yang berwenang hanya bla bla bla ", dan kemudian saya mendapatkan

Izin ditolak (publickey, kata sandi, keyboard-interaktif).

~/.drush/aliases.drushrc.phpFile saya mengandung:

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

HANYA Drush memiliki masalah menggunakan kunci ssh saya. Apa yang bisa mencegahnya bekerja?


3
Saya kira itu tergantung dari mana pengguna Drush sedang dijalankan. Jika Drush dijalankan oleh www-data(misalnya), maka kunci SSH Anda mungkin salah / tidak diizinkan / tidak dimasukkan dalam daftar putih.
Chapabu

4
Jalankan perintah drush Anda dengan opsi -v atau -s untuk melihat perintah ssh persis yang dihasilkan Drush untuk Anda. Harus jelas dari apa perbedaan antara doa Drush ssh dan uji cli Anda yang sama.
greg_1_anderson

@ Chapabu: Ya, saya harus menggunakan sudosebelumnya drushdan tampaknya semuanya berjalan sebagai root (lubang keamanan saya sudah memberitahukan sysadmin tentang). Tampaknya ini masalahnya. Saat ini saya sedang mencari solusi sementara saya menunggu sysadmin ...
iconoclast

Jawaban:


19

Letakkan baris ini di file drushrc.php Anda:

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

Ini akan menyebabkan Drush meneruskan opsi-opsi ini ke ssh kapan saja ia memanggil sistem jarak jauh Anda, sehingga Anda dapat terus memanggil Drush melalui sudo, dan masih menggunakan kredensial pengguna login Anda.


Bung kau hebat ...
iconoclast

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

jika dipahami dengan benar, direktori "/home/YOURUSERNAME/.ssh/id_rsa" bersifat lokal ke tempat perintah drush dijalankan. Dir "home / YOURUSERNAME" adalah dir $ HOME dan id_rsa adalah kunci pribadi itu sendiri yang dihasilkan melalui ssh-keygen
latvian

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.