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?

iconoclast
sumber
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.

greg_1_anderson
sumber
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
1

Periksa di sini: Cara menjalankan Drush sebagai Apache

Anda hanya perlu mengubah pemilik / grup untuk Drush di server Anda!

Chapabu
sumber
Ini mungkin solusi yang ideal ... tapi saya harus membuat sysadmin setuju sebelum saya bisa mengatur semuanya dengan cara ini.
iconoclast