Điều gì có thể khiến các lệnh drush từ xa không thành công với lỗi ssh khi ssh hoạt động trong tất cả các trường hợp khác?


10

Tôi có khóa ssh công khai và riêng tư trên cả ba máy chủ của mình (dev, UAT và sản xuất) để tôi có thể đăng nhập từ xa hoặc từ máy này sang máy khác. Tất cả mọi thứ đang làm việc hoàn hảo cho các lệnh sshscp.

không hoạt động, tuy nhiên, đối với Drush. drush @dev statusVí dụ: nếu tôi thực thi từ UAT, tôi sẽ nhận được biểu ngữ của máy chủ nói rằng hệ thống "chỉ được sử dụng bởi người dùng được ủy quyền chỉ blah blah blah ", và sau đó tôi nhận được

Quyền bị từ chối (khóa công khai, mật khẩu, tương tác bàn phím).

~/.drush/aliases.drushrc.phpTập tin của tôi chứa:

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

CHỈ Drush có bất kỳ vấn đề sử dụng các phím ssh của tôi. Điều gì có thể ngăn nó hoạt động?


3
Tôi đoán nó phụ thuộc vào người dùng Drush đang được chạy từ đâu. Nếu Drush đang được điều hành bởi www-data(ví dụ), thì các khóa SSH của bạn có thể bị sai / không được phép / không được đưa vào danh sách trắng.
Chapabu

4
Chạy các lệnh drush của bạn với tùy chọn -v hoặc -s để xem lệnh ssh chính xác mà Drush đang tạo cho bạn. Cần phải rõ ràng rằng sự khác biệt giữa lời mời Drush của ssh và bài kiểm tra cli của bạn giống nhau.
greg_1_anderson

@Chapabu: Vâng, tôi phải sử dụng sudotrước đó drushvà có vẻ như mọi thứ đang chạy như root (một lỗ hổng bảo mật tôi đã cảnh báo cho sysadmin về). Có vẻ như đây là vấn đề. Tôi hiện đang tìm kiếm một giải pháp trong khi chờ đợi sysadmin ...
iconoclast

Câu trả lời:


19

Đặt dòng này trong tệp drushrc.php của bạn:

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

Điều này sẽ khiến Drush chuyển các tùy chọn này cùng với ssh bất cứ khi nào nó gọi hệ thống từ xa của bạn, vì vậy bạn có thể tiếp tục gọi Drush qua sudo và vẫn sử dụng thông tin đăng nhập của người dùng.


Anh bạn thật tuyệt vời ...
iconoclast

Ví dụ cho Windows: $ Options ['ssh-Tùy chọn'] = '-o PasswordAuthentication = no -i C: \ users \ laptop1 \ .ssh \ id_rsa';
Bryan Jiencke

nếu hiểu chính xác, thư mục "/home/YOURUSERNAME/.ssh/id_rsa" là cục bộ nơi lệnh drush được thực thi. Thư mục "home / YOUUSERNAME" là thư mục $ HOME và id_rsa là khóa riêng được tạo thông qua ssh-keygen
Emily

1

Kiểm tra ở đây: Cách chạy Drush như Apache

Bằng âm thanh của nó, bạn chỉ cần thay đổi chủ sở hữu / nhóm cho Drush trên máy chủ của bạn!


Đây có thể là giải pháp lý tưởng ... nhưng tôi sẽ phải đồng ý với sysadmin trước khi tôi có thể thiết lập mọi thứ theo cách này.
iconoclast
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.