समस्या: अक्सर पहला कमांड जो मैं अपने बॉक्स में टाइप करता हूं su -
।
प्रश्न: मैं vagrant ssh
डिफ़ॉल्ट रूप से रूट उपयोगकर्ता का उपयोग कैसे करूं ?
संस्करण: योनि 1.6.5
समस्या: अक्सर पहला कमांड जो मैं अपने बॉक्स में टाइप करता हूं su -
।
प्रश्न: मैं vagrant ssh
डिफ़ॉल्ट रूप से रूट उपयोगकर्ता का उपयोग कैसे करूं ?
संस्करण: योनि 1.6.5
जवाबों:
यह उपयोगी है:
sudo passwd root
किसी को भी, जो पहले योनि में रूट पासवर्ड सेट करने की आवश्यकता से पकड़ा गया है
समाधान:
अपने में निम्नलिखित जोड़ें Vagrantfile
:
config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'
जब आप vagrant ssh
इसके बाद, आप के रूप में लॉग इन करेंगे root
और निम्नलिखित की उम्मीद करनी चाहिए:
==> mybox: Waiting for machine to boot. This may take a few minutes...
mybox: SSH address: 127.0.0.1:2222
mybox: SSH username: root
mybox: SSH auth method: password
mybox: Warning: Connection timeout. Retrying...
mybox: Warning: Remote connection disconnect. Retrying...
==> mybox: Inserting Vagrant public key within guest...
==> mybox: Key inserted! Disconnecting and reconnecting using new SSH key...
==> mybox: Machine booted and ready!
अपडेट 23-जून -2015 : यह संस्करण 1.7.2 के लिए भी काम करता है। 1.7.0 से कुंजीयन सुरक्षा में सुधार हुआ है; यह तकनीक पिछली विधि पर वापस जाती है जो एक ज्ञात निजी कुंजी का उपयोग करती है। यह समाधान एक ऐसे बॉक्स के लिए उपयोग करने का इरादा नहीं है जो प्रकाशन से पहले किए गए उचित सुरक्षा उपायों के बिना सार्वजनिक रूप से सुलभ हो।
संदर्भ:
vagrant ssh
? (वर्णित बदलाव करने के बाद)
config.ssh.password
मूल्य में आपके पास क्या हो । आपको config.ssh.*
अपने बॉक्स तक पहुंचने के लिए नई जोड़ी गई लाइनों के बारे में टिप्पणी करने और फिर रूट पासवर्ड को बदलने में सक्षम होना चाहिए sudo passwd root
।
mkdir -m 700 /root/.ssh && cp ~vagrant/.ssh/authorized_keys /root/.ssh
centos/7
: यह बॉक्स एक यादृच्छिक रूट पासवर्ड सेट करता है; कोई रूट कर सकता है vagrant ssh
और फिर sudo su
रूट कर सकता है , लेकिन (जो मैं बता सकता हूं) से vagrant up
इस वीएम का उपयोग करके एक नए सिरे से कॉन्फिग सेटिंग्स काम नहीं करती हैं ।
यह काम करता है यदि आप ubuntu / trusty64 बॉक्स पर हैं:
vagrant ssh
एक बार जब आप ubuntu बॉक्स में हैं:
sudo su
अब आप रूट यूजर हैं। आप नीचे दिखाए अनुसार रूट पासवर्ड अपडेट कर सकते हैं:
sudo -i
passwd
अब फाइल में नीचे की लाइन को एडिट करें /etc/ssh/sshd_config
PermitRootLogin yes
इसके अलावा, अपना स्वयं का वैकल्पिक उपयोगकर्ता नाम बनाना सुविधाजनक है:
adduser johndoe
तब तक प्रतीक्षा करें जब तक यह पासवर्ड न मांगे।
यदि Vagrantfile
नीचे दिया गया है:
config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'
लेकिन योनि अभी भी आपसे रूट पासवर्ड पूछते हैं, सबसे अधिक संभावना है कि आपके द्वारा उपयोग किया जाने वाला आधार बॉक्स रूट लॉगिन की अनुमति देने के लिए कॉन्फ़िगर नहीं किया गया है।
उदाहरण के लिए, आधिकारिक ubuntu14.04 बॉक्स PermitRootLogin yes
में सेट नहीं है /etc/ssh/sshd_config
।
इसलिए यदि आप चाहते हैं कि एक बॉक्स रूट डिफॉल्ट के रूप में लॉगिन कर सके (केवल वैग्रांटफाइल, कोई और काम नहीं), तो आपको यह करना होगा:
उपयोगकर्ता नाम vagrant
(जो भी नाम लेकिन मूल) द्वारा एक vm सेटअप करें
लॉगिन और sshd config फाइल को एडिट करें।
ubuntu: संपादित करें /etc/ssh/sshd_config
, सेट करें PermitRootLogin yes
अन्य: ....
(मैं केवल ubuntu का उपयोग करता हूं, अन्य प्लेटफार्मों के वर्कअराउंड को जोड़ने के लिए स्वतंत्र महसूस करता हूं)
एक नया आधार बॉक्स बनाएँ:
vagrant package --base your-vm-name
यह एक फ़ाइल बनाएँ package.box
योनि में उस बेस बॉक्स को जोड़ें:
vagrant box add ubuntu-root file:///somepath/package.box
फिर, आपको vm के निर्माण के लिए इस बेस बॉक्स का उपयोग करना होगा जो रूट के रूप में ऑटो लॉगिन की अनुमति देता है।
द्वारा मूल vm को नष्ट करें vagrant destroy
मूल संपादित करें Vagrantfile
, बॉक्स का नाम ubuntu-root
और उपयोगकर्ता नाम बदलें root
, फिर vagrant up
एक नया बनाएं।
यह पता लगाने के लिए मुझे कुछ समय लगा, यह मेरी राय में बहुत जटिल है। आशा है कि इस में सुधार होगा।
पहले से लॉगिन करने के लिए रूट को रूट करने की अनुमति नहीं है !!!
/etc/ssh/sshd_config
फ़ाइल में नीचे दिए गए कॉन्फ़िगरेशन कोड को रखें ।
PermitRootLogin yes
नोट: केवल स्थानीय विकास के लिए इस पद्धति का उपयोग करें, यह सुरक्षित नहीं है । आप बॉक्स को प्रोविजन करते समय पासवर्ड और ssh कॉन्फिगरेशन सेटअप कर सकते हैं। उदाहरण के लिए debian/stretch64
बॉक्स के साथ यह मेरी प्रावधान स्क्रिप्ट है:
config.vm.provision "shell", inline: <<-SHELL
echo -e "vagrant\nvagrant" | passwd root
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
sed -in 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
service ssh restart
SHELL
यह रूट पासवर्ड सेट करेगा vagrant
और पासवर्ड से रूट लॉगिन की अनुमति देगा। यदि आप private_network
IP पते के साथ उपयोग कर रहे हैं 192.168.10.37
तो आप के साथ ssh कर सकते हैंssh root@192.168.10.37
आपको डिफ़ॉल्ट फ़ाइल के आधार पर उसे echo
और sed
कमांड को बदलना पड़ सकता है sshd_config
।
इसे Vagrantfile
मेरे लिए काम करने के लिए जोड़ना । ये पंक्तियाँ sudo su -
आपके द्वारा लॉगिन करने पर हर बार दर्ज करने के बराबर हैं । कृपया ध्यान दें कि इसके लिए वीएम को पुन: व्यवस्थित करने की आवश्यकता है।
config.vm.provision "shell", inline: <<-SHELL
echo "sudo su -" >> .bashrc
SHELL
मुझे पता है कि यह एक पुराना प्रश्न है, लेकिन मूल प्रश्न को देखते हुए, ऐसा लगता है कि उपयोगकर्ता केवल एक कमांड को रूट के रूप में चलाना चाहता था, यही वह है जब मुझे एक उत्तर की तलाश थी और प्रश्न के पार ठोकर खाई थी।
तो यह एक मेरी राय में जानने लायक है:
vagrant ssh servername -c "echo vagrant | sudo -S shutdown 0"
vagrant
क्या पासवर्ड sudo कमांड में गूँज रहा है, क्योंकि जैसा कि हम सभी जानते हैं, योनि खाते में sudo विशेषाधिकार हैं और जब आप sudo करते हैं, तो आपको उपयोगकर्ता खाते के पासवर्ड को निर्दिष्ट करने की आवश्यकता है, रूट नहीं..और डिफ़ॉल्ट रूप से, निश्चित रूप से। योनि उपयोगकर्ता का पासवर्ड है vagrant
!
डिफ़ॉल्ट रूप से आपको शटडाउन करने के लिए रूट विशेषाधिकार की आवश्यकता होती है, इसलिए मुझे लगता है कि शटडाउन करना एक अच्छा परीक्षण है।
जाहिर है कि आपको सर्वर नाम निर्दिष्ट करने की आवश्यकता नहीं है यदि उस आवारा वातावरण के लिए केवल एक ही है। साथ ही, हम मेजबान को स्थानीय योनि वर्चुअल मशीन के बारे में बात कर रहे हैं, इसलिए वास्तव में कोई सुरक्षा मुद्दा नहीं है जो मैं देख सकता हूं।
उम्मीद है की यह मदद करेगा।
vagrant destroy
vagrant up
कृपया इसे योनि फ़ाइल में जोड़ें:
config.ssh.username = 'vagrant'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'