varsayılan olarak root olarak serseri oturum açma


94

Sorun: kutularıma yazdığım ilk komut sıklıkla su -.

Soru: vagrant sshKök kullanıcıyı varsayılan olarak nasıl kullanabilirim?

Sürüm: vagrant 1.6.5


Stack Overflow, programlama ve geliştirme soruları için bir sitedir. Bu soru, programlama veya geliştirme ile ilgili olmadığı için konu dışı gibi görünüyor. Burada , Yardım Merkezinde hangi konular hakkında soru sorabilirim konusuna bakın . Belki Süper Kullanıcı veya Unix ve Linux Yığın Değişimi sormak için daha iyi bir yer olabilir. Ayrıca, Dev Ops ile ilgili sorularımı nereye gönderebilirim?
jww

Yanıtlar:


146

Bu kullanışlı:

sudo passwd root

Önce serseride bir kök şifre belirleme ihtiyacı duyan herkes için


1
Hayatımı kurtardı. Bunun serseri davranışlarıyla herhangi bir yansıması olup olmadığını biliyor musunuz?
Matt

1
Buradaki ders şudur: Bir temel kutu oluşturursanız, Hashicorp tarafından önerilen kuralları izleyin ve kök parolanızı 'serseri' olarak ayarlayın. bkz. docs.vagrantup.com/v2/boxes/base.html
Mike D

Kişisel bilgisayarınızda gerçekten kolayca tahmin edilebilen bir root şifresi bulunan bir sunucuyla ilgili herhangi bir potansiyel güvenlik sorunu var mı? Ağ ayarlarının buna yardımcı olduğunu hayal ediyorum ama merak ediyorum.
Nathan Basanese

1
İpucu için teşekkürler Ubuntu'nun serseri kutularının kök kullanıcı için rastgele bir şifre belirlediği ortaya çıktı (Bkz. Groups.google.com/d/msg/vagrant-up/xMWKkKW24xs/f5OaV5QWAp4J ). Bu yüzden her zaman önce bir root şifresi belirlemelisiniz.
asmaier

Teşekkür ederim, buna gerçekten ihtiyacım var
ka_lin

110

Çözüm:
Şunları ekleyin Vagrantfile:

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

Ne zaman vagrant sshbundan böyle, sen olarak giriş edecek rootve aşağıdaki beklemelidir:

==> 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 Haziran 2015 Güncellemesi: Bu, 1.7.2 sürümünde de çalışır. Anahtarlama güvenliği 1.7.0'dan beri geliştirildi; bu teknik, bilinen bir özel anahtar kullanan önceki yönteme göre geçersiz kılar. Bu çözümün, yayınlamadan önce uygun güvenlik önlemleri alınmadan herkesin erişebileceği bir kutu için kullanılması amaçlanmamıştır.

Referans:


Çalıştırılırken parola isteminin alınması için herhangi bir sebep olabilir vagrant sshmi? (açıklanan değişiklikleri yaptıktan sonra) Vagrant version 1.7.2
roign

@RobertIgnat muhtemelen kök şifrenizi config.ssh.passworddeğerinizdeki ile eşleşecek şekilde ayarlamanız gerektiğidir . config.ssh.*kutunuza erişmek için yeni eklenen satırları yorumlayabilmeli ve ardından kök şifresini değiştirebilmelisiniz sudo passwd root.
Mike D

11
Zaten tedarik edilmiş bir makine için yukarıdakileri yapın ve yapınmkdir -m 700 /root/.ssh && cp ~vagrant/.ssh/authorized_keys /root/.ssh
Felipe Alvarez

2
yeni bir Vagrant kurulumu için işe yaramaz, çünkü muhtemelen biri ubuntu / xenial kullandığında, orada pişirilen kullanıcı oturumlarını kullanmak ZORUNDADIR. (ayrıca bkz stackoverflow.com/a/40478402/605463 )
axd

1
Kullanan diğer herkes için centos/7: Bu kutu rastgele bir kök parolası belirler; bir olabilir vagrant sshve sonra sudo sukök, ancak (söyleyebildiğim kadarıyla) yapılandırma ayarları vagrant upbu VM'yi kullanarak yeni bir üzerinde çalışmıyor .
mhulse

37

Bu, ubuntu / trusty64 kutusundaysanız çalışır:

vagrant ssh

Ubuntu kutusuna girdikten sonra:

sudo su

Artık root kullanıcısınız. Root parolasını aşağıda gösterildiği gibi güncelleyebilirsiniz:

sudo -i
passwd

Şimdi dosyada aşağıdaki satırı düzenleyin /etc/ssh/sshd_config

PermitRootLogin yes

Ayrıca, kendi alternatif kullanıcı adınızı oluşturmanız da uygundur:

adduser johndoe

Şifre isteyene kadar bekleyin.


12

Eğer Vagrantfileaşağıdaki gibi:

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

Ancak serseri hala size root şifresi soruyor, büyük olasılıkla kullandığınız temel kutu, kök oturumuna izin verecek şekilde yapılandırılmamış.


Örneğin, resmi ubuntu14.04 kutusu set yok PermitRootLogin yesiçinde /etc/ssh/sshd_config.

Dolayısıyla, bir kutunun kök varsayılan olarak oturum açmasını istiyorsanız (yalnızca Vagrantfile, artık çalışma yok), yapmanız gerekenler:

  1. Kullanıcı vagrantadına göre bir vm kurun (isim dışında kök)

  2. Sshd yapılandırma dosyasına giriş yapın ve dosyayı düzenleyin.

    ubuntu: düzenle /etc/ssh/sshd_config, ayarla PermitRootLogin yes

    diğerleri: ....

    (Sadece ubuntu kullanıyorum, diğer platformların geçici çözümlerini eklemekten çekinmeyin)

  3. Yeni bir temel kutu oluşturun:

    vagrant package --base your-vm-name
    

    bu bir dosya oluştur package.box

  4. Bu temel kutuyu serseriye ekle:

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

    daha sonra, root olarak otomatik oturum açmaya izin veren vm oluşturmak için bu temel kutuyu kullanmanız gerekir.

  5. Orijinal vm'yi şu şekilde yok edin: vagrant destroy

  6. Orijinali düzenleyin , Vagrantfilekutu adını olarak ubuntu-rootve kullanıcı adını olarak değiştirin root, ardından vagrant upyeni bir tane oluşturun.

Anlaması biraz zamana mal oldu, bence çok karmaşık. Umut serseri bunu iyileştirir.


10

Unutmayın, root un daha önce oturum açmasına izin verilir !!!

Aşağıdaki yapılandırma kodunu /etc/ssh/sshd_configdosyaya yerleştirin.

PermitRootLogin yes

SO'ya hoş geldiniz. Lütfen yanıtlara yeterince ayrıntı ve bağlam ekleyin. Özellikle eski soruyu iyi cevaplarla yanıtlarken
Jayan

bu benim için ana çözümden daha faydalı oldu. ssh, varsayılan olarak root olarak oturum açmanıza izin vermez.
bmbigbang

2

Bunu Vagrantfilebenim için çalışılana eklemek . Bu satırlar, sudo su -her oturum açtığınızda girmenizle eşdeğerdir . Lütfen bunun sanal makinenin yeniden yapılandırılmasını gerektirdiğini unutmayın.

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

1
Çok basit çözümünüz için teşekkürler! echo "sudo -s" >> .bashrc daha iyi olurdu.
Honiix

@Honiix demek -iistiyorsun? 😅
Thomas Gotwig

@ThomasGotwig haklısınız, `-i '' -s 'den daha yaygındır, her ikisi de ne yapmak istediğinize bağlı olarak çalışır. Ama benim açımdan, sudo ve su zincirinden kaçınmanın en iyisi olduğuydu.
Honiix

2

Not: Bu yöntemi yalnızca yerel geliştirme için kullanın, güvenli değildir . Kutuyu hazırlarken parola ve ssh yapılandırmasını ayarlayabilirsiniz. Örneğin, debian/stretch64kutuyla birlikte bu benim provizyon komut dosyam:

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

Bu, root şifresini ayarlayacak vagrantve şifre ile root girişine izin verecektir . private_networkSay ip adresi ile kullanıyorsanız 192.168.10.37, ssh yapabilirsinizssh root@192.168.10.37

Varsayılan dosyaya bağlı olarak bunu echove sedkomutları değiştirmeniz gerekebilir sshd_config.


1

Bunun eski bir soru olduğunu biliyorum, ancak orijinal soruya baktığımızda, kullanıcı sadece bir komutu root olarak çalıştırmak istemiş gibi görünüyor, bir cevap ararken ve soruyla karşılaştığımda yapmam gereken şey bu.

Yani bu bence bilmeye değer:

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

vagrantsudo komutunda yankılanan şifredir, çünkü hepimizin bildiği gibi, serseri hesabın sudo ayrıcalıkları vardır ve sudo yaptığınızda kullanıcı hesabının şifresini belirlemeniz gerekir, root değil ... ve tabii ki varsayılan olarak, serseri kullanıcının şifresi vagrant!

Varsayılan olarak, kapatmak için kök ayrıcalıklarına ihtiyacınız vardır, bu nedenle kapatma yapmak iyi bir testtir.

Açıkçası, bu serseri ortam için yalnızca bir sunucu adı varsa, bir sunucu adı belirlemenize gerek yoktur. Ayrıca, ana makineye yerel serseri sanal makineden bahsediyoruz, bu yüzden görebildiğim herhangi bir güvenlik sorunu yok.

Bu yardımcı olur umarım.


0

İle bile root olarak oturum açmaya çalışırken provizyonda bazı sorunlar yaşadım PermitRootLogin yes. Bunu sadece vagrant sshkomut etkilenecek şekilde yaptım :

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

-8
vagrant destroy
vagrant up

Lütfen bunu serseri dosyasına ekleyin:

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

Varsayılan kullanıcı zaten serseri olduğundan bu hiçbir şey yapmaz .
Jamal

config.ssh.username = 'vagrant' .... kullanmak yerine config.ssh.username = 'root' .... kullanın bu yardımcı olacaktır.
Jimmy MG Lim
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.