जब अन्य सभी मामलों में ssh काम करता है, तो ssh त्रुटियों के साथ दूरस्थ ड्रश कमांड विफल हो सकता है?


10

मेरे पास मेरे तीनों सर्वरों (देव, यूएटी, और प्रोडक्शन) पर सार्वजनिक और निजी ssh कुंजियाँ हैं, ताकि मैं दूरस्थ रूप से, या एक से दूसरे में लॉग इन कर सकूँ। सब कुछ पूरी तरह से sshऔर scpआदेशों के लिए काम कर रहा है ।

हालांकि, यह ड्रश के लिए काम नहीं करता है । यदि मैं यूएटी drush @dev statusसे निष्पादित करता हूं , उदाहरण के लिए, मुझे सर्वर का बैनर यह कहते हुए मिलता है कि सिस्टम "अधिकृत उपयोगकर्ताओं द्वारा केवल ब्ला ब्ला ब्ला द्वारा उपयोग किया जाना है ", और फिर मुझे मिलता है

अनुमति से इनकार (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 कुंजियाँ गलत / अस्वीकृत / नॉन- व्हाइटेल्ड हो सकती हैं।
चपबाबू

4
Drush के लिए सटीक ssh कमांड को देखने के लिए -v या -s विकल्प के साथ अपने ड्रश कमांड को चलाएं। इससे स्पष्ट होना चाहिए कि ssh के Drush आह्वान और उसी के क्ली टेस्ट में क्या अंतर है।
greg_1_anderson

@ चेतापाबू: हां, मुझे sudoपहले इस्तेमाल करना है drushऔर ऐसा प्रतीत होता है कि सब कुछ रूट के रूप में चल रहा है (एक सुरक्षा छेद जिसे मैंने sysadmin के बारे में सतर्क किया है)। ऐसा प्रतीत होता है कि यह समस्या है। मैं वर्तमान में एक समाधान की तलाश में हूं, जब मैं sysadmin की प्रतीक्षा करता हूं ...
iconoclast

जवाबों:


19

इस लाइन को अपनी drushrc.php फ़ाइल में रखें:

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

यह Drush को आपके दूरस्थ सिस्टम को कॉल करने के किसी भी समय ssh के साथ इन विकल्पों को पारित करने का कारण होगा, इसलिए आप sudush के माध्यम से Drush को कॉल करना जारी रख सकते हैं, और फिर भी अपने लॉगिन उपयोगकर्ता क्रेडेंशियल्स का उपयोग कर सकते हैं।


यार तुम कमाल हो ...
iconoclast

विंडोज के लिए उदाहरण: $ विकल्प ['ssh-options'] = '-o PasswordAuthentication = no -i C: \ users \ laptop1 \। Ssh \ id_rsa';
ब्रायन जिएनके

अगर सही ढंग से समझा जाए, तो "/home/YOURUSERNAME/.ssh/id_rsa" dir स्थानीय है जहां ड्रश कमांड निष्पादित होता है। "घर / yourusername" dir $ HOME निर्देशिका और id_rsa निजी कुंजी iteself ssh-keygen के माध्यम से उत्पन्न है
latvian

1

यहां देखें: ड्रश को अपाचे के रूप में कैसे चलाया जाए

यह की आवाज से आप बस अपने सर्वर पर Drush के लिए मालिक / समूह को बदलने की जरूरत है!


यह आदर्श समाधान हो सकता है ... लेकिन इससे पहले कि मैं इस तरह से चीजों को स्थापित करने के लिए सहमत होने के लिए मुझे सहमत होना पड़ेगा।
iconoclast
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.