Masalah: seringkali perintah pertama yang saya ketik ke kotak saya adalah su -
.
Pertanyaan: bagaimana cara vagrant ssh
menggunakan pengguna root secara default?
Versi: gelandangan 1.6.5.0
Masalah: seringkali perintah pertama yang saya ketik ke kotak saya adalah su -
.
Pertanyaan: bagaimana cara vagrant ssh
menggunakan pengguna root secara default?
Versi: gelandangan 1.6.5.0
Jawaban:
Ini berguna:
sudo passwd root
bagi siapa saja yang terjebak oleh kebutuhan untuk mengatur kata sandi root di gelandangan terlebih dahulu
Solusi:
Tambahkan yang berikut ini ke Anda Vagrantfile
:
config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'
Ketika Anda vagrant ssh
selanjutnya, Anda akan login sebagai root
dan 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:
vagrant ssh
? (setelah melakukan perubahan yang dijelaskan) Vagrant versi 1.7.2
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
.
mkdir -m 700 /root/.ssh && cp ~vagrant/.ssh/authorized_keys /root/.ssh
centos/7
: Kotak ini menetapkan kata sandi root acak; satu dapat vagrant ssh
dan kemudian sudo su
ke root, tetapi (dari apa yang saya tahu) pengaturan konfigurasi tidak berfungsi pada saat baru vagrant up
menggunakan VM ini.
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.
Jika Vagrantfile
seperti 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 yes
di /etc/ssh/sshd_config
.
Jadi Jika Anda ingin sebuah kotak dapat login sebagai root default (hanya Vagrantfile, tidak ada lagi pekerjaan), Anda harus:
Siapkan vm dengan nama pengguna vagrant
(nama apa pun kecuali root)
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)
Bangun kotak dasar baru:
vagrant package --base your-vm-name
ini membuat file package.box
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.
Hancurkan vm asli dengan vagrant destroy
Edit yang asli Vagrantfile
, ubah nama kotak menjadi ubuntu-root
dan nama pengguna menjadi root
, lalu vagrant up
buat yang baru.
Saya butuh waktu untuk mengetahuinya, itu terlalu rumit menurut saya. Semoga gelandangan bisa memperbaiki ini.
Jangan lupa root diperbolehkan root untuk login sebelumnya !!!
Tempatkan kode konfigurasi di bawah ini dalam /etc/ssh/sshd_config
file.
PermitRootLogin yes
Menambahkan ini ke yang Vagrantfile
berhasil 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
-i
? 😅
Catatan: Hanya gunakan metode ini untuk pengembangan lokal, ini tidak aman . Anda dapat mengatur sandi dan konfigurasi ssh saat menyediakan kotak. Misalnya dengan debian/stretch64
kotak 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 vagrant
dan mengizinkan login root dengan kata sandi. Jika Anda menggunakan private_network
say with ip address 192.168.10.37
maka Anda bisa ssh denganssh root@192.168.10.37
Anda mungkin perlu mengubahnya echo
dansed
perintah tergantung pada sshd_config
file default .
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.
Saya mengalami beberapa masalah dengan penyediaan saat mencoba masuk sebagai root, bahkan dengan PermitRootLogin yes
. Saya membuatnya jadi hanya vagrant ssh
perintah yang terpengaruh:
# Login as root when doing vagrant ssh
if ARGV[0]=='ssh'
config.ssh.username = 'root'
end
vagrant destroy
vagrant up
Harap tambahkan ini ke file gelandangan:
config.ssh.username = 'vagrant'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'