ล็อกอินคนจรจัดเป็นรูทโดยค่าเริ่มต้น


94

ปัญหา: บ่อยครั้งคำสั่งแรกที่ฉันพิมพ์ลงในกล่องของฉันคือsu -.

คำถาม: ฉันจะvagrant sshใช้ผู้ใช้รูทโดยค่าเริ่มต้นได้อย่างไร?

เวอร์ชัน: คนจรจัด 1.6.5


Stack Overflow เป็นไซต์สำหรับคำถามเกี่ยวกับการเขียนโปรแกรมและการพัฒนา คำถามนี้ดูเหมือนจะไม่ตรงประเด็นเนื่องจากไม่เกี่ยวกับการเขียนโปรแกรมหรือการพัฒนา ดูหัวข้อที่ฉันสามารถถามได้ที่นี่ในศูนย์ช่วยเหลือ บางทีSuper UserหรือUnix & Linux Stack Exchangeอาจเป็นสถานที่ที่ดีกว่าในการถาม ดูเพิ่มเติมที่ฉันจะโพสต์คำถามเกี่ยวกับ Dev Ops ได้ที่ไหน
jww

คำตอบ:


146

สิ่งนี้มีประโยชน์:

sudo passwd root

สำหรับใครก็ตามที่ถูกจับได้ว่าต้องตั้งรหัสผ่านรูทในคนเร่ร่อนก่อน


1
ช่วยชีวิตฉันไว้. คุณรู้หรือไม่ว่าสิ่งนี้มีผลกระทบกับการกระทำของคนเร่ร่อนหรือไม่?
Matt

1
บทเรียนที่นี่คือถ้าคุณสร้างกล่องฐานให้ทำตามข้อตกลงที่แนะนำโดย Hashicorp และตั้งค่า root passwd เป็น 'vagrant' ดูdocs.vagrantup.com/v2/boxes/base.html
Mike D

มีปัญหาด้านความปลอดภัยที่อาจเกิดขึ้นกับเซิร์ฟเวอร์ที่มีรหัสผ่านรูทที่เดาได้ง่ายอยู่บนคอมพิวเตอร์ส่วนบุคคลของคุณหรือไม่? ฉันคิดว่าการตั้งค่าเครือข่ายช่วยในเรื่องนี้ แต่ฉันสงสัย
Nathan Basanese

1
ขอบคุณสำหรับคำใบ้ ปรากฎว่ากล่องคนเร่ร่อนของ Ubuntu ตั้งรหัสผ่านแบบสุ่มสำหรับผู้ใช้รูท (ดูgroups.google.com/d/msg/vagrant-up/xMWKkKW24xs/f5OaV5QWAp4J ) ดังนั้นจึงต้องตั้งรหัสผ่านรูทก่อนเสมอ
asmaier

ขอบคุณจริงๆต้องการสิ่งนี้
ka_lin

110

วิธีแก้ไข:
เพิ่มสิ่งต่อไปนี้ใน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
ย่าง

@RobertIgnat อาจเป็นไปได้ว่าคุณต้องตั้งค่ารหัสผ่านรูทของคุณให้ตรงกับสิ่งที่คุณมีในconfig.ssh.passwordค่าของคุณ คุณควรจะสามารถที่จะแสดงความคิดเห็นออกที่เพิ่มใหม่สายการเข้าถึงกล่องของคุณแล้วเปลี่ยนรหัสผ่านรากผ่านconfig.ssh.* sudo passwd root
Mike D

11
สำหรับเครื่องที่ได้รับการจัดเตรียมแล้วให้ทำตามข้างต้นและทำmkdir -m 700 /root/.ssh && cp ~vagrant/.ssh/authorized_keys /root/.ssh
Felipe Alvarez

2
ใช้ไม่ได้กับการติดตั้ง Vagrant ใหม่อาจเป็นเพราะเมื่อมีคนใช้เช่น ubuntu / xenial หนึ่ง HAS เพื่อใช้การเข้าสู่ระบบของผู้ใช้ที่อบไว้ที่นั่น (ดูที่stackoverflow.com/a/40478402/605463 )
axd

1
สำหรับใครก็ตามที่ใช้centos/7: กล่องนี้ตั้งรหัสผ่านรูทแบบสุ่ม ใครสามารถvagrant sshและจากนั้นsudo suไปยังราก แต่ (จากสิ่งที่ผมสามารถบอกได้) การตั้งค่าการตั้งค่าจะไม่ได้ทำงานบนสดvagrant upโดยใช้ VM นี้
mhulse

37

ใช้งานได้ถ้าคุณอยู่ในกล่อง ubuntu / trusty64:

vagrant ssh

เมื่อคุณอยู่ในกล่อง Ubuntu:

sudo su

ตอนนี้คุณเป็นผู้ใช้รูท คุณสามารถอัปเดตรหัสผ่าน root ได้ตามที่แสดงด้านล่าง:

sudo -i
passwd

ตอนนี้แก้ไขบรรทัดด้านล่างในไฟล์ /etc/ssh/sshd_config

PermitRootLogin yes

นอกจากนี้ยังสะดวกในการสร้างชื่อผู้ใช้อื่นของคุณเอง:

adduser johndoe

รอจนกว่าระบบจะถามรหัสผ่าน


12

หากมีVagrantfileดังต่อไปนี้:

config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'

แต่คนจรจัดยังคงถามรหัสผ่านรูทของคุณซึ่งส่วนใหญ่แล้วกล่องฐานที่คุณใช้ไม่ได้กำหนดค่าให้อนุญาตการเข้าสู่ระบบรูท


ยกตัวอย่างเช่นอย่างเป็นทางการกล่อง ubuntu14.04 ไม่ได้ตั้งค่า ในPermitRootLogin yes/etc/ssh/sshd_config

ดังนั้นหากคุณต้องการให้กล่องสามารถเข้าสู่ระบบเป็นค่าเริ่มต้นของรูท (เฉพาะ Vagrantfile ไม่ต้องทำงานอีกต่อไป) คุณต้อง:

  1. ตั้งค่า vm ด้วยชื่อผู้ใช้vagrant(ไม่ว่าจะเป็นชื่อใดก็ตาม แต่รูท)

  2. เข้าสู่ระบบและแก้ไขไฟล์ config sshd

    Ubuntu: แก้ไข/etc/ssh/sshd_configตั้งค่า PermitRootLogin yes

    คนอื่น ๆ : ....

    (ฉันใช้ Ubuntu เท่านั้นอย่าลังเลที่จะเพิ่มวิธีแก้ปัญหาของแพลตฟอร์มอื่น ๆ )

  3. สร้างกล่องฐานใหม่:

    vagrant package --base your-vm-name
    

    สิ่งนี้สร้างไฟล์ package.box

  4. เพิ่มกล่องฐานนั้นให้กับคนเร่ร่อน:

    vagrant box add ubuntu-root file:///somepath/package.box
    

    จากนั้นคุณต้องใช้กล่องฐานนี้เพื่อสร้าง vm ซึ่งอนุญาตให้ล็อกอินอัตโนมัติเป็นรูท

  5. ทำลาย vm ดั้งเดิมโดย vagrant destroy

  6. แก้ไขต้นฉบับVagrantfileเปลี่ยนชื่อกล่องubuntu-rootและชื่อผู้ใช้เป็นrootจากนั้นvagrant upสร้างใหม่

ฉันต้องใช้เวลาพอสมควรในการคิดออกมันซับซ้อนเกินไปในความคิดของฉัน หวังว่าคนจรจัดจะปรับปรุงสิ่งนี้


10

อย่าลืมรูทอนุญาตให้รูทล็อกอินก่อน !!!

วางรหัสกำหนดค่าด้านล่างใน/etc/ssh/sshd_configไฟล์

PermitRootLogin yes

ยินดีต้อนรับสู่ SO โปรดเพิ่มรายละเอียดและบริบทให้เพียงพอสำหรับคำตอบ โดยเฉพาะอย่างยิ่งเมื่อตอบคำถามเก่า ๆ ด้วยคำตอบที่ดี
Jayan

สิ่งนี้มีประโยชน์สำหรับฉันมากกว่าโซลูชันหลัก ssh ไม่อนุญาตให้คุณเข้าสู่ระบบในฐานะรูทตามค่าเริ่มต้น
bmbigbang

3

หมายเหตุ:ใช้วิธีนี้เท่านั้นสำหรับการพัฒนาท้องถิ่นมันไม่ได้เป็นที่เชื่อถือได้ คุณสามารถตั้งค่ารหัสผ่านและกำหนดค่า 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_networksay with ip address 192.168.10.37คุณสามารถ ssh ด้วยssh root@192.168.10.37

คุณอาจต้องเปลี่ยนสิ่งนั้นechoและsedคำสั่งขึ้นอยู่กับsshd_configไฟล์เริ่มต้น


2

การเพิ่มสิ่งนี้ให้กับVagrantfileฉัน บรรทัดเหล่านี้เทียบเท่ากับที่คุณป้อนsudo su -ทุกครั้งที่เข้าสู่ระบบ โปรดสังเกตว่าสิ่งนี้ต้องมีการจัดสรร VM ใหม่

config.vm.provision "shell", inline: <<-SHELL
    echo "sudo su -" >> .bashrc
SHELL

1
ขอบคุณสำหรับวิธีง่ายๆ! echo "sudo -s" >> .bashrc น่าจะดีกว่า
Honiix

@Honiix คุณหมายถึง-i? 😅
Thomas Gotwig

@ThomasGotwig คุณพูดถูก `-i เป็นเรื่องธรรมดามากกว่า` -s 'ทั้งสองอย่างขึ้นอยู่กับสิ่งที่คุณต้องการทำ แต่ประเด็นของฉันคือควรหลีกเลี่ยงการผูกมัดซูโดและซู
Honiix

1

ฉันรู้ว่านี่เป็นคำถามเก่า แต่เมื่อดูคำถามเดิมดูเหมือนว่าผู้ใช้แค่ต้องการเรียกใช้คำสั่งในฐานะรูทนั่นคือสิ่งที่ฉันต้องทำเมื่อฉันค้นหาคำตอบและพบกับคำถามนั้น

ดังนั้นสิ่งนี้ควรค่าแก่การรู้ในความคิดของฉัน:

vagrant ssh servername -c "echo vagrant | sudo -S shutdown 0"

vagrantคือรหัสผ่านที่สะท้อนลงในคำสั่ง sudo เพราะอย่างที่เราทุกคนทราบกันดีว่าบัญชีคนจรจัดมีสิทธิ์ sudo และเมื่อคุณ sudo คุณต้องระบุรหัสผ่านของบัญชีผู้ใช้ไม่ใช่ root .. และแน่นอนโดยค่าเริ่มต้น รหัสผ่านของผู้ใช้คนจรจัดคือvagrant!

โดยค่าเริ่มต้นคุณต้องมีสิทธิ์รูทเพื่อปิดระบบดังนั้นฉันเดาว่าการปิดเครื่องเป็นการทดสอบที่ดี

เห็นได้ชัดว่าคุณไม่จำเป็นต้องระบุชื่อเซิร์ฟเวอร์หากมีเพียงหนึ่งเดียวสำหรับสภาพแวดล้อมที่เร่ร่อนนั้น นอกจากนี้เรากำลังพูดถึงเครื่องเสมือนคนเร่ร่อนในพื้นที่กับโฮสต์ดังนั้นฉันจึงไม่เห็นปัญหาด้านความปลอดภัยใด ๆ

หวังว่านี่จะช่วยได้


0

ฉันมีปัญหาในการจัดเตรียมเมื่อพยายามเข้าสู่ระบบในฐานะรูทแม้ว่าจะมีPermitRootLogin yesไฟล์. ฉันทำเพื่อให้มีผลเฉพาะvagrant sshคำสั่ง:

# Login as root when doing vagrant ssh
if ARGV[0]=='ssh'
  config.ssh.username = 'root'
end

-8
vagrant destroy
vagrant up

โปรดเพิ่มสิ่งนี้ในไฟล์คนจรจัด:

config.ssh.username = 'vagrant'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'

นี้ไม่ทำอะไรเลยตั้งแต่ผู้ใช้เริ่มต้นที่มีอยู่แล้วคนจรจัด
Jamal

แทนที่จะใช้ config.ssh.username = 'vagrant' .... ใช้ config.ssh.username = 'root' .... สิ่งนี้จะช่วยได้
Jimmy MG Lim
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.