login gelandangan sebagai root secara default

94

Masalah: seringkali perintah pertama yang saya ketik ke kotak saya adalah su -.

Pertanyaan: bagaimana cara vagrant sshmenggunakan pengguna root secara default?

Versi: gelandangan 1.6.5.0

Mike D
sumber
Stack Overflow adalah situs untuk pertanyaan pemrograman dan pengembangan. Pertanyaan ini tampaknya di luar topik karena ini bukan tentang pemrograman atau pengembangan. Lihat Topik apa yang dapat saya tanyakan di sini di Pusat Bantuan. Mungkin Super User atau Unix & Linux Stack Exchange akan menjadi tempat yang lebih baik untuk bertanya. Lihat juga Di mana saya memposting pertanyaan tentang Dev Ops?
jww

Jawaban:

146

Ini berguna:

sudo passwd root

bagi siapa saja yang terjebak oleh kebutuhan untuk mengatur kata sandi root di gelandangan terlebih dahulu

Ed Williams
sumber
1
Menyelamatkan hidupku. Apakah Anda tahu apakah ini berdampak pada tindakan gelandangan?
Matt
1
Pelajarannya di sini adalah jika Anda membuat kotak dasar, ikuti konvensi yang disarankan oleh Hashicorp dan setel sandi root Anda ke 'gelandangan'. lihat docs.vagrantup.com/v2/boxes/base.html
Mike D
Apakah ada masalah keamanan potensial dengan server yang memiliki kata sandi root yang sangat mudah ditebak di komputer pribadi Anda? Saya membayangkan pengaturan jaringan membantu dengan ini, tetapi saya bertanya-tanya.
Nathan Basanese
1
Terima kasih atas petunjuknya. Ternyata kotak gelandangan Ubuntu menetapkan kata sandi acak untuk pengguna root (Lihat groups.google.com/d/msg/vagrant-up/xMWKkKW24xs/f5OaV5QWAp4J ). Jadi seseorang harus selalu mengatur kata sandi root terlebih dahulu.
asmaier
Terima kasih, sangat membutuhkan ini
ka_lin
110

Solusi:
Tambahkan yang berikut ini ke Anda Vagrantfile:

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

Ketika Anda vagrant sshselanjutnya, Anda akan login sebagai rootdan harus mengharapkan yang berikut:

==> 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!

Pembaruan 23-Jun-2015: Ini berfungsi untuk versi 1.7.2 juga. Keamanan keying telah meningkat sejak 1.7.0; teknik ini menggantikan kembali ke metode sebelumnya yang menggunakan kunci pribadi yang diketahui. Solusi ini tidak dimaksudkan untuk digunakan pada kotak yang dapat diakses publik tanpa tindakan pengamanan yang tepat dilakukan sebelum penerbitan.

Referensi:

Mike D
sumber
Mungkinkah ada alasan untuk mendapatkan prompt kata sandi saat dijalankan vagrant ssh? (setelah melakukan perubahan yang dijelaskan) Vagrant versi 1.7.2
roign
@RobertIgnat mungkin Anda perlu menyetel sandi root agar sesuai dengan nilai yang Anda miliki config.ssh.password. Anda harus dapat memberi komentar pada config.ssh.*baris yang baru ditambahkan untuk mengakses kotak Anda dan kemudian mengubah kata sandi root melalui sudo passwd root.
Mike D
11
Untuk mesin yang telah disediakan, lakukan hal di atas, dan lakukanmkdir -m 700 /root/.ssh && cp ~vagrant/.ssh/authorized_keys /root/.ssh
Felipe Alvarez
2
tidak berfungsi untuk instalasi Vagrant baru, mungkin karena ketika seseorang menggunakan misalnya ubuntu / xenial, seseorang HARUS menggunakan login pengguna yang dipanggang di sana. (lihat juga stackoverflow.com/a/40478402/605463 )
axd
1
Untuk orang lain yang menggunakan centos/7: Kotak ini menetapkan kata sandi root acak; satu dapat vagrant sshdan kemudian sudo suke root, tetapi (dari apa yang saya tahu) pengaturan konfigurasi tidak berfungsi pada saat baru vagrant upmenggunakan VM ini.
mhulse
37

Ini berfungsi jika Anda berada di kotak ubuntu / trusty64:

vagrant ssh

Setelah Anda berada di kotak ubuntu:

sudo su

Sekarang Anda adalah pengguna root. Anda dapat memperbarui kata sandi root seperti yang ditunjukkan di bawah ini:

sudo -i
passwd

Sekarang edit baris di bawah ini di file /etc/ssh/sshd_config

PermitRootLogin yes

Selain itu, akan lebih mudah membuat nama pengguna alternatif Anda sendiri:

adduser johndoe

Tunggu sampai ia meminta kata sandi.

Thyag
sumber
12

Jika Vagrantfileseperti di bawah ini:

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

Tetapi gelandangan masih meminta Anda kata sandi root, kemungkinan besar kotak dasar yang Anda gunakan tidak dikonfigurasi untuk mengizinkan login root.


Misalnya, kotak ubuntu14.04 resmi tidak menetapkan PermitRootLogin yesdi /etc/ssh/sshd_config.

Jadi Jika Anda ingin sebuah kotak dapat login sebagai root default (hanya Vagrantfile, tidak ada lagi pekerjaan), Anda harus:

  1. Siapkan vm dengan nama pengguna vagrant(nama apa pun kecuali root)

  2. Masuk dan edit file konfigurasi sshd.

    ubuntu: edit /etc/ssh/sshd_config, atur PermitRootLogin yes

    lainnya: ....

    (Saya hanya menggunakan ubuntu, jangan ragu untuk menambahkan solusi dari platform lain)

  3. Bangun kotak dasar baru:

    vagrant package --base your-vm-name
    

    ini membuat file package.box

  4. Tambahkan kotak dasar itu ke gelandangan:

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

    kemudian, Anda perlu menggunakan kotak dasar ini untuk membangun vm yang memungkinkan login otomatis sebagai root.

  5. Hancurkan vm asli dengan vagrant destroy

  6. Edit yang asli Vagrantfile, ubah nama kotak menjadi ubuntu-rootdan nama pengguna menjadi root, lalu vagrant upbuat yang baru.

Saya butuh waktu untuk mengetahuinya, itu terlalu rumit menurut saya. Semoga gelandangan bisa memperbaiki ini.

Mithril
sumber
10

Jangan lupa root diperbolehkan root untuk login sebelumnya !!!

Tempatkan kode konfigurasi di bawah ini dalam /etc/ssh/sshd_configfile.

PermitRootLogin yes
Andrew Coding
sumber
Selamat datang di SO. Harap tambahkan detail dan konteks yang cukup untuk jawaban. Terutama saat menjawab pertanyaan lama dengan jawaban yang bagus
Jayan
ini lebih berguna bagi saya daripada solusi utama. ssh tidak mengizinkan Anda masuk sebagai root secara default.
bmbigbang
2

Menambahkan ini ke yang Vagrantfileberhasil untuk saya. Baris ini sama dengan yang Anda masukkan sudo su -setiap kali Anda masuk. Harap perhatikan bahwa ini memerlukan VM untuk penyediaan ulang.

config.vm.provision "shell", inline: <<-SHELL
    echo "sudo su -" >> .bashrc
SHELL
fpereiro.dll
sumber
1
Terima kasih atas solusi Anda yang sangat sederhana! echo "sudo -s" >> .bashrc akan lebih baik.
Honiix
@Honiix Maksudmu -i? 😅
Thomas Gotwig
@ThomasGotwig Anda benar, `-i` lebih umum daripada `-s`, keduanya berfungsi tergantung pada apa yang ingin Anda lakukan. Tapi maksud saya adalah yang terbaik adalah menghindari merantai sudo dan su.
Honiix
2

Catatan: Hanya gunakan metode ini untuk pengembangan lokal, ini tidak aman . Anda dapat mengatur sandi dan konfigurasi ssh saat menyediakan kotak. Misalnya dengan debian/stretch64kotak ini adalah skrip penyediaan saya:

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

Ini akan mengatur kata sandi root vagrantdan mengizinkan login root dengan kata sandi. Jika Anda menggunakan private_networksay with ip address 192.168.10.37maka Anda bisa ssh denganssh [email protected]

Anda mungkin perlu mengubahnya echodansed perintah tergantung pada sshd_configfile default .

Seyed Jalal Hosseini
sumber
1

Saya tahu ini adalah pertanyaan lama, tetapi melihat pertanyaan asli, sepertinya pengguna hanya ingin menjalankan perintah sebagai root, itulah yang perlu saya lakukan ketika saya mencari jawaban dan menemukan pertanyaan itu.

Jadi yang ini perlu diketahui menurut saya:

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

vagrant adalah kata sandi di-echo ke dalam perintah sudo, karena seperti yang kita semua tahu, akun gelandangan memiliki hak sudo dan ketika Anda sudo, Anda perlu menentukan kata sandi akun pengguna, bukan root..dan tentu saja secara default, kata sandi pengguna gelandangan adalah vagrant !

Secara default Anda memerlukan hak akses root untuk mematikan jadi saya kira melakukan shutdown adalah ujian yang bagus.

Jelas Anda tidak perlu menentukan nama server jika hanya ada satu untuk lingkungan gelandangan itu. Juga, kita berbicara tentang mesin virtual gelandangan lokal kepada tuan rumah, jadi sebenarnya tidak ada masalah keamanan yang saya lihat.

Semoga ini membantu.

Chris Barnett
sumber
0

Saya mengalami beberapa masalah dengan penyediaan saat mencoba masuk sebagai root, bahkan dengan PermitRootLogin yes. Saya membuatnya jadi hanya vagrant sshperintah yang terpengaruh:

# Login as root when doing vagrant ssh
if ARGV[0]=='ssh'
  config.ssh.username = 'root'
end
jxmallett.dll
sumber
-8
vagrant destroy
vagrant up

Harap tambahkan ini ke file gelandangan:

config.ssh.username = 'vagrant'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'
eric lagi
sumber
Ini tidak melakukan apa-apa karena pengguna default sudah gelandangan .
Jamal
daripada menggunakan config.ssh.username = 'vagrant' .... gunakan config.ssh.username = 'root' .... ini akan membantu.
Jimmy MG Lim