vagrant domyślnie loguje się jako root


94

Problem: często pierwsze polecenie, które wpisuję w moich skrzynkach, to su -.

Pytanie: jak vagrant sshdomyślnie korzystać z użytkownika root?

Wersja: vagrant 1.6.5


Stack Overflow to witryna zawierająca pytania dotyczące programowania i programowania. To pytanie wydaje się być niezwiązane z tematem, ponieważ nie dotyczy programowania ani programowania. Zobacz, o jakie tematy mogę zapytać w Centrum pomocy. Być może lepszym miejscem do zadawania pytań będzie Super User lub Unix & Linux Stack Exchange . Zobacz też Gdzie mogę zadawać pytania dotyczące operacji deweloperskich?
jww

Odpowiedzi:


146

Jest to przydatne:

sudo passwd root

dla każdego, kogo złapała potrzeba ustawienia hasła roota w vagrant


1
Uratował mi życie. Czy wiesz, czy ma to jakieś reperkusje w tym, jak zachowuje się włóczęga?
Matt

1
Lekcja jest taka, że ​​jeśli tworzysz skrzynkę bazową, postępuj zgodnie z konwencjami sugerowanymi przez Hashicorp i ustaw swoje hasło roota na „vagrant”. patrz docs.vagrantup.com/v2/boxes/base.html
Mike D,

Czy są jednak jakieś potencjalne problemy z bezpieczeństwem na serwerze, który ma naprawdę łatwe do odgadnięcia hasło roota na Twoim komputerze osobistym? Wyobrażam sobie, że pomagają w tym ustawienia sieciowe, ale zastanawiam się.
Nathan Basanese

1
Dziękuję za podpowiedź. Okazuje się, że włóczęgi Ubuntu ustawiają losowe hasło dla użytkownika root (patrz groups.google.com/d/msg/vagrant-up/xMWKkKW24xs/f5OaV5QWAp4J ). Dlatego zawsze trzeba najpierw ustawić hasło roota.
asmaier

Dziękuję, naprawdę tego potrzebowałem
ka_lin

110

Rozwiązanie:
dodaj następujące elementy do swojego Vagrantfile:

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

Kiedy vagrant sshodtąd będziesz się zalogować jak rooti należy spodziewać się, co następuje:

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

Aktualizacja z 23 czerwca 2015 r .: Działa to również w wersji 1.7.2. Bezpieczeństwo kluczy poprawiło się od wersji 1.7.0; ta technika zastępuje poprzednią metodę, która używa znanego klucza prywatnego. To rozwiązanie nie jest przeznaczone do użytku w przypadku skrzynki, która jest publicznie dostępna bez odpowiednich środków bezpieczeństwa podjętych przed publikacją.

Odniesienie:


Czy może istnieć jakiś powód do wyświetlenia monitu o hasło podczas uruchamiania vagrant ssh? (po dokonaniu opisanych zmian) Vagrant wersja 1.7.2
roign

@RobertIgnat prawdopodobnie musisz ustawić hasło roota, aby pasowało do tego, co masz w config.ssh.passwordwartości. powinieneś być w stanie skomentować nowo dodane config.ssh.*linie, aby uzyskać dostęp do skrzynki, a następnie zmienić hasło roota za pośrednictwem sudo passwd root.
Mike D

11
W przypadku maszyny, która została już przygotowana, wykonaj powyższe czynności i wykonajmkdir -m 700 /root/.ssh && cp ~vagrant/.ssh/authorized_keys /root/.ssh
Felipe Alvarez

2
nie działa dla nowej instalacji Vagranta, prawdopodobnie dlatego, że kiedy używa się np. ubuntu / xenial, MUSI użyć zapieczonych tam loginów użytkownika. (patrz także stackoverflow.com/a/40478402/605463 )
axd.

1
Dla każdego używającego centos/7: To pole ustawia losowe hasło roota; można, vagrant ssha następnie sudo suzrootować, ale (z tego, co wiem) ustawienia konfiguracyjne nie działają na nowej vagrant upmaszynie wirtualnej.
mhulse

37

Działa to, jeśli korzystasz z skrzynki ubuntu / trusty64:

vagrant ssh

Gdy znajdziesz się w polu ubuntu:

sudo su

Teraz jesteś użytkownikiem root. Możesz zaktualizować hasło roota, jak pokazano poniżej:

sudo -i
passwd

Teraz edytuj poniższą linię w pliku /etc/ssh/sshd_config

PermitRootLogin yes

Ponadto wygodnie jest utworzyć własną alternatywną nazwę użytkownika:

adduser johndoe

Poczekaj, aż zapyta o hasło.


12

Jeśli Vagrantfilejak poniżej:

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

Ale włóczęga nadal pyta cię o hasło roota, najprawdopodobniej używana skrzynka podstawowa nie jest skonfigurowana do zezwalania na logowanie roota.


Na przykład, pole ubuntu14.04 offical nie ustawisz PermitRootLogin yesw /etc/ssh/sshd_config.

Więc jeśli chcesz, aby box mógł logować się domyślnie jako root (tylko Vagrantfile, nie ma więcej pracy), musisz:

  1. Skonfiguruj maszynę wirtualną według nazwy użytkownika vagrant(niezależnie od nazwy oprócz root)

  2. Zaloguj się i edytuj plik konfiguracyjny sshd.

    ubuntu: edytuj /etc/ssh/sshd_config, ustaw PermitRootLogin yes

    inne: ....

    (Używam tylko Ubuntu, nie krępuj się dodać obejście innych platform)

  3. Zbuduj nowe pudełko podstawowe:

    vagrant package --base your-vm-name
    

    to tworzy plik package.box

  4. Dodaj to pudełko bazowe dla włóczęgi:

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

    następnie musisz użyć tego podstawowego pudełka do zbudowania maszyny wirtualnej, która pozwoli na automatyczne logowanie jako root.

  5. Zniszcz oryginalny vm wg vagrant destroy

  6. Edytuj oryginał Vagrantfile, zmień nazwę skrzynki na ubuntu-rooti nazwę użytkownika na root, a następnie vagrant uputwórz nową.

Kosztowało mnie to trochę czasu, moim zdaniem jest to zbyt skomplikowane. Mam nadzieję, że włóczęga to poprawi.


10

Nie zapominaj, że root może się zalogować wcześniej !!!

Umieść poniższy kod konfiguracyjny w /etc/ssh/sshd_configpliku.

PermitRootLogin yes

Witamy w SO. Dodaj wystarczająco dużo szczegółów i kontekstu do odpowiedzi. Zwłaszcza, gdy odpowiadasz na stare pytanie z dobrymi odpowiedziami
Jayan

było to dla mnie bardziej przydatne niż główne rozwiązanie. ssh nie pozwala domyślnie zalogować się jako root.
bmbigbang

2

Dodanie tego do Vagrantfilepracy dla mnie. Te wiersze są odpowiednikiem tego, sudo su -co wpisujesz przy każdym logowaniu. Zwróć uwagę, że wymaga to ponownej obsługi maszyny wirtualnej.

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

1
Dzięki za bardzo proste rozwiązanie! echo "sudo -s" >> .bashrc byłoby lepsze.
Honiix

@Honiix Masz na myśli -i? 😅
Thomas Gotwig

@ThomasGotwig masz rację, `-i` jest częstsze niż `-s`, oba działają w zależności od tego, co chcesz zrobić. Chodziło mi jednak o to, że najlepiej unikać łączenia sudo i su.
Honiix

2

Uwaga: używaj tej metody tylko do lokalnego programowania, nie jest bezpieczna . Możesz ustawić hasło i konfigurację ssh podczas udostępniania skrzynki. Na przykład z debian/stretch64pudełkiem jest mój skrypt prowizyjny:

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

Spowoduje to ustawienie hasła roota vagranti zezwolenie na logowanie roota za pomocą hasła. Jeśli używasz private_networksay z adresem IP 192.168.10.37, możesz ssh zssh root@192.168.10.37

Może zajść potrzeba zmiany tego echoi sedpoleceń w zależności od domyślnego sshd_configpliku.


1

Wiem, że to stare pytanie, ale patrząc na oryginalne pytanie, wygląda na to, że użytkownik chciał tylko uruchomić polecenie jako root, to właśnie muszę zrobić, gdy szukałem odpowiedzi i natknąłem się na to pytanie.

Więc moim zdaniem warto wiedzieć:

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

vagrant to hasło powtarzane w poleceniu sudo, ponieważ jak wszyscy wiemy, konto vagrant ma uprawnienia sudo, a kiedy używasz sudo, musisz podać hasło konta użytkownika, a nie roota ... i oczywiście domyślnie hasło użytkownika włóczęgi to vagrant !

Domyślnie potrzebujesz uprawnień roota, aby zamknąć system, więc myślę, że zamknięcie systemu jest dobrym testem.

Oczywiście nie musisz określać nazwy serwera, jeśli jest tylko jeden dla tego środowiska włóczęgów. Mówimy również o lokalnej maszynie wirtualnej włóczęgi do hosta, więc tak naprawdę nie widzę żadnego problemu z bezpieczeństwem.

Mam nadzieję że to pomoże.


0

Miałem problemy z obsługą administracyjną podczas próby zalogowania się jako root, nawet z PermitRootLogin yes. Zrobiłem to, więc dotyczy to tylko vagrant sshpolecenia:

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

-8
vagrant destroy
vagrant up

Dodaj to do pliku włóczęgi:

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

To nic nie robi, ponieważ domyślny użytkownik jest już włóczęgą .
Jamal

zamiast używać config.ssh.username = 'vagrant' .... użyj config.ssh.username = 'root' .... to pomoże.
Jimmy MG Lim
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.