ปัญหา: บ่อยครั้งคำสั่งแรกที่ฉันพิมพ์ลงในกล่องของฉันคือ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 มิ.ย. 2558: ใช้ งานได้กับเวอร์ชัน 1.7.2 เช่นกัน ความปลอดภัยของคีย์ได้รับการปรับปรุงตั้งแต่ 1.7.0; เทคนิคนี้จะแทนที่วิธีการก่อนหน้าซึ่งใช้คีย์ส่วนตัวที่รู้จัก โซลูชันนี้ไม่ได้มีวัตถุประสงค์เพื่อใช้สำหรับกล่องที่สามารถเข้าถึงได้โดยสาธารณะโดยไม่มีมาตรการรักษาความปลอดภัยที่เหมาะสมก่อนที่จะเผยแพร่
อ้างอิง:
vagrant ssh
? (หลังจากทำการเปลี่ยนแปลงตามที่อธิบายไว้) Vagrant เวอร์ชัน 1.7.2
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
โดยใช้ VM นี้
ใช้งานได้ถ้าคุณอยู่ในกล่อง ubuntu / trusty64:
vagrant ssh
เมื่อคุณอยู่ในกล่อง Ubuntu:
sudo su
ตอนนี้คุณเป็นผู้ใช้รูท คุณสามารถอัปเดตรหัสผ่าน root ได้ตามที่แสดงด้านล่าง:
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
ดังนั้นหากคุณต้องการให้กล่องสามารถเข้าสู่ระบบเป็นค่าเริ่มต้นของรูท (เฉพาะ Vagrantfile ไม่ต้องทำงานอีกต่อไป) คุณต้อง:
ตั้งค่า vm ด้วยชื่อผู้ใช้vagrant
(ไม่ว่าจะเป็นชื่อใดก็ตาม แต่รูท)
เข้าสู่ระบบและแก้ไขไฟล์ config sshd
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
say with ip address 192.168.10.37
คุณสามารถ ssh ด้วยssh root@192.168.10.37
คุณอาจต้องเปลี่ยนสิ่งนั้นecho
และsed
คำสั่งขึ้นอยู่กับsshd_config
ไฟล์เริ่มต้น
การเพิ่มสิ่งนี้ให้กับVagrantfile
ฉัน บรรทัดเหล่านี้เทียบเท่ากับที่คุณป้อนsudo su -
ทุกครั้งที่เข้าสู่ระบบ โปรดสังเกตว่าสิ่งนี้ต้องมีการจัดสรร VM ใหม่
config.vm.provision "shell", inline: <<-SHELL
echo "sudo su -" >> .bashrc
SHELL
-i
? 😅
ฉันรู้ว่านี่เป็นคำถามเก่า แต่เมื่อดูคำถามเดิมดูเหมือนว่าผู้ใช้แค่ต้องการเรียกใช้คำสั่งในฐานะรูทนั่นคือสิ่งที่ฉันต้องทำเมื่อฉันค้นหาคำตอบและพบกับคำถามนั้น
ดังนั้นสิ่งนี้ควรค่าแก่การรู้ในความคิดของฉัน:
vagrant ssh servername -c "echo vagrant | sudo -S shutdown 0"
vagrant
คือรหัสผ่านที่สะท้อนลงในคำสั่ง sudo เพราะอย่างที่เราทุกคนทราบกันดีว่าบัญชีคนจรจัดมีสิทธิ์ sudo และเมื่อคุณ sudo คุณต้องระบุรหัสผ่านของบัญชีผู้ใช้ไม่ใช่ root .. และแน่นอนโดยค่าเริ่มต้น รหัสผ่านของผู้ใช้คนจรจัดคือvagrant
!
โดยค่าเริ่มต้นคุณต้องมีสิทธิ์รูทเพื่อปิดระบบดังนั้นฉันเดาว่าการปิดเครื่องเป็นการทดสอบที่ดี
เห็นได้ชัดว่าคุณไม่จำเป็นต้องระบุชื่อเซิร์ฟเวอร์หากมีเพียงหนึ่งเดียวสำหรับสภาพแวดล้อมที่เร่ร่อนนั้น นอกจากนี้เรากำลังพูดถึงเครื่องเสมือนคนเร่ร่อนในพื้นที่กับโฮสต์ดังนั้นฉันจึงไม่เห็นปัญหาด้านความปลอดภัยใด ๆ
หวังว่านี่จะช่วยได้
ฉันมีปัญหาในการจัดเตรียมเมื่อพยายามเข้าสู่ระบบในฐานะรูทแม้ว่าจะมีPermitRootLogin yes
ไฟล์. ฉันทำเพื่อให้มีผลเฉพาะvagrant ssh
คำสั่ง:
# Login as root when doing vagrant ssh
if ARGV[0]=='ssh'
config.ssh.username = 'root'
end
vagrant destroy
vagrant up
โปรดเพิ่มสิ่งนี้ในไฟล์คนจรจัด:
config.ssh.username = 'vagrant'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'