สิ่งใดที่อาจทำให้คำสั่ง drush รีโมตล้มเหลวโดยมีข้อผิดพลาด ssh เมื่อ ssh ทำงานในกรณีอื่นทั้งหมด?


10

ฉันมีคีย์ ssh สาธารณะและส่วนตัวในเซิร์ฟเวอร์ทั้งสามของฉัน (dev, UAT และการผลิต) เพื่อให้ฉันสามารถเข้าสู่ระบบจากระยะไกลหรือจากที่หนึ่งไปยังอีก ทุกอย่างทำงานได้อย่างสมบูรณ์แบบสำหรับคำสั่ง sshและscp

อย่างไรก็ตามมันไม่ทำงานสำหรับ Drush ถ้าฉันดำเนินการdrush @dev statusจาก UAT ตัวอย่างเช่นฉันจะได้รับแบนเนอร์ของเซิร์ฟเวอร์โดยบอกว่าระบบคือ "ใช้โดยผู้ใช้ที่ได้รับอนุญาตเท่านั้นblah blah blah " และจากนั้นฉันก็จะได้รับ

ปฏิเสธการอนุญาต (publickey, รหัสผ่าน, แป้นพิมพ์แบบโต้ตอบ)

~/.drush/aliases.drushrc.phpไฟล์ของฉันประกอบด้วย:

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

Drushเท่านั้นมีปัญหาในการใช้คีย์ ssh ของฉัน สิ่งใดที่สามารถป้องกันไม่ให้ทำงาน


3
ฉันเดาว่ามันขึ้นอยู่กับผู้ใช้ Drush ที่กำลังถูกเรียกใช้ หาก Drush กำลังทำงานโดยwww-data(เช่น) แสดงว่าคีย์ SSH ของคุณอาจผิด / ไม่อนุญาต / ไม่ปลอดภัย
Chapabu

4
เรียกใช้คำสั่ง drush ด้วยตัวเลือก -v หรือ -s เพื่อดูคำสั่ง ssh ที่ Drush สร้างขึ้นมาเพื่อคุณ มันควรจะชัดเจนจากสิ่งที่แตกต่างระหว่างการร้องขอ Drush ของ ssh และการทดสอบ cli ของคุณในสิ่งเดียวกัน
greg_1_anderson

@Chapabu: ใช่ฉันต้องใช้sudoก่อนหน้านี้drushและดูเหมือนว่าทุกอย่างจะทำงานเหมือนรูท ดูเหมือนว่าปัญหานี้จะเกิดขึ้น ฉันกำลังมองหาวิธีการแก้ปัญหาในขณะที่ฉันรอ sysadmin ...
iconoclast

คำตอบ:


19

วางบรรทัดนี้ในไฟล์ drushrc.php ของคุณ:

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

สิ่งนี้จะทำให้ Drush ส่งตัวเลือกเหล่านี้ไปยัง ssh เมื่อใดก็ตามที่เรียกระบบระยะไกลของคุณดังนั้นคุณสามารถโทร Drush ผ่าน sudo ต่อไปและยังคงใช้ข้อมูลรับรองผู้ใช้ของคุณ


เพื่อนของคุณยอดเยี่ยม ...
iconoclast

ตัวอย่างสำหรับ Windows: $ options ['ssh-options'] = '-o PasswordAuthentication = no -i C: \ users \ laptop1 \ .ssh \ id_rsa';
ไบรอัน Jiencke

หากเข้าใจถูกต้องคำสั่ง "/home/YOURUSERNAME/.ssh/id_rsa" จะเป็นแบบโลคัลซึ่งเป็นตำแหน่งที่คำสั่ง drush ถูกเรียกใช้งาน "home / YOURUSERNAME" dir คือ $ HOME dir และ id_rsa เป็นรหัสส่วนตัวที่สร้างขึ้นผ่าน ssh-keygen
เวีย

1

ตรวจสอบที่นี่: วิธีเรียกใช้ Drush เป็น Apache

ด้วยเสียงของมันคุณเพียงแค่ต้องเปลี่ยนเจ้าของ / กลุ่มสำหรับ Drush บนเซิร์ฟเวอร์ของคุณ!


นี่อาจเป็นทางออกที่ดีที่สุด ... แต่ฉันจะต้องดูแลระบบก่อนที่จะตกลงกันก่อนที่ฉันจะสามารถตั้งค่าได้ด้วยวิธีนี้
iconoclast
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.