Błąd uwierzytelniania Vagrant ssh

147

Problem z uwierzytelnianiem ssh:

==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: bridged
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Error: Connection timeout. Retrying...
    default: Error: Connection timeout. Retrying...
    default: Error: Connection timeout. Retrying...
    default: Error: Connection timeout. Retrying...
    default: Error: Authentication failure. Retrying...
    default: Error: Authentication failure. Retrying...
    default: Error: Authentication failure. Retrying...
    default: Error: Authentication failure. Retrying...
    default: Error: Authentication failure. Retrying...

Mogę Ctrl+Cwyjść z pętli uwierzytelniania, a następnie pomyślnie ssh wejść ręcznie.

Wykonałem następujące kroki na skrzynce dla gości:

  • Włączone Remote Logindla All Users.

  • Utworzono ~/.sshkatalog z 0700uprawnieniami.

  • Utworzono ~/.ssh/authorized_keysplik z 0600uprawnieniami.

  • Wklejono ten klucz publiczny do~/.ssh/authorized_keys

Próbowałem również użyć sieci prywatnej (tylko hostowej) zamiast sieci publicznej (mostowanej), używając tego wiersza w pliku Vagrantfile:

config.vm.network "private_network", ip: "172.16.177.7"

Otrzymuję te same dane wyjściowe (z wyjątkiem Adapter 2: hostonly), ale nie mogę ssh wprowadzić ręcznie.

Ja też próbowałem config.vm.network "private_network", ip: "10.0.0.100".

Próbowałem też config.ssh.passwordumieścić w Vagrantfile. To wyświetla, SSH auth method: passwordale nadal nie uwierzytelnia się.

Spróbowałem także odbudować pudełko i ponownie sprawdzić wszystkie powyższe.

Wygląda na to, że inni odnieśli sukces z tą konfiguracją , więc musi być coś, co robię źle.

I znaleźć ten wątek i włączona GUI, ale to nie pomaga.

ic3b3rg
źródło

Odpowiedzi:

1

Upewnij się, że pierwszym interfejsem sieciowym jest NAT. Drugi drugi interfejs sieciowy może być wszystkim, co chcesz, kiedy budujesz pudełko. Nie zapomnij o użytkowniku Vagrant, o którym mowa w wątku Google.

Powodzenia.

user3509054
źródło
171

Ogólne informacje: domyślnie ssh-connect możesz po prostu użyć

użytkownik: vagranthasło:vagrant

https://www.vagrantup.com/docs/boxes/base.html#quot-vagrant-quot-user

Najpierw spróbuj: zobaczyć, jaki włóczęga insecure_private_keyjest w konfiguracji twojego komputera

$ vagrant ssh-config

Przykład:

$ vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile C:/Users/konst/.vagrant.d/insecure_private_key
  IdentitiesOnly yes
  LogLevel FATAL

http://docs.vagrantup.com/v2/cli/ssh_config.html

Po drugie: zmień zawartość pliku insecure_private_keyna zawartość osobistego klucza prywatnego systemu

Lub użyj: Dodaj to do Vagrantfile:

Vagrant.configure("2") do |config|
  config.ssh.private_key_path = "~/.ssh/id_rsa"
  config.ssh.forward_agent = true
end
  1. config.ssh.private_key_path to Twój lokalny klucz prywatny
  2. Twój klucz prywatny musi być dostępny dla lokalnego agenta ssh. Możesz to sprawdzić ssh-add -L. Jeśli nie ma go na liście, dodaj go za pomocąssh-add ~/.ssh/id_rsa
  3. Nie zapomnij dodać swojego klucza publicznego do ~/.ssh/authorized_keysna Vagrant VM. Możesz to zrobić, kopiując i wklejając lub używając narzędzia takiego jak ssh-copy-id (użytkownik: roothasło: vagrantport: 2222)ssh-copy-id '-p 2222 [email protected]'

Jeśli nadal nie działa, spróbuj tego:

  1. Usuń insecure_private_keyplik zc:\Users\USERNAME\.vagrant.d\insecure_private_key

  2. Uruchom vagrant up(włóczęga wygeneruje nowy insecure_private_keyplik)

W innych przypadkach warto po prostu ustawić forward_agent w Vagrantfile :

Vagrant::Config.run do |config|
   config.ssh.forward_agent = true
end

Przydatny:

Konfigurowanie gita może odbywać się za pomocą git-scm.com

Po skonfigurowaniu tego programu i utworzeniu osobistego klucza prywatnego systemu będzie w Twojej ścieżce profilu:c:\users\USERNAME\.ssh\id_rsa.pub

PS: Wreszcie - zasugeruj przyjrzenie się Ubuntu na Windows 10

shilovk
źródło
4
w moim przypadku był to problem, ponieważ config.ssh.private_key_path = "~/.ssh/id_rsa"musiałem usunąć tę linię, aby obsługa administracyjna działała
holms
Wszystko to działało, ale musiałem również usunąć swój wpis w znanych hostach. Miałem problemy z przenoszeniem lokalizacji i logowaniem się.
Pumphouse
@shilovk +1 Dziękuję, dziękuję, bardzo dziękuję. „Po drugie, zrób” załatwiło sprawę. Jeszcze raz bardzo dziękuję człowieku.
whitesiroi
Ten wskazał mi właściwy kierunek, w moim przypadku wszystko, co musiałem zrobić, to usunąć plik .vagrant / Machines / default / virtualbox / private_key i po uruchomieniu vagranta podmienił plik na właściwy - wykonałbym kopię zapasową plik na wszelki wypadek
andrux
Pierwszym i najważniejszym krokiem jest sprawdzenie ustawień BIOS-u, upewnij się, że wirtualizacja jest włączona.
Bahman,
83

Żadne z powyższych nie działało dla mnie. W jakiś sposób do skrzynki został dodany zły klucz publiczny w pliku authorised_keys użytkownika vagrant .

Jeśli nadal możesz ssh na pudełku z hasłem vagrant (hasło to vagrant), tj

ssh vagrant@localhost -p 2222

następnie skopiuj zawartość klucza publicznego z https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub do pliku authorised_keys za pomocą następującego polecenia

echo "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key" > .ssh/authorized_keys

Po zakończeniu wyjdź z maszyny wirtualnej i spróbuj ponownie ssh vagrant. Teraz powinno działać.

Bizmate
źródło
4
uruchomić vagrant reloadpo zaktualizowaniu pliku Authorized_keys. Vagrant automatycznie wykryje niezabezpieczony klucz i wygeneruje go ponownie. Powinien działać później.
ProfileTwist
47

Jeśli napotkasz ten problem na vagrant 1.8.5, sprawdź ten wątek na github:

https://github.com/mitchellh/vagrant/issues/7610

Zasadniczo jest to spowodowane problemem z uprawnieniami, obejście jest po prostu

vagrant ssh 
password: vagrant 
chmod 0600 ~/.ssh/authorized_keys
exit

następnie

vagrant reload 

FYI: ten problem dotyczy tylko CentOS, Ubuntu działa dobrze.

Lei Xu
źródło
Powiedzmy, że mam 5 maszyn na jeden plik włóczęgi. Za każdym razem, gdy uruchamiam ponownie, muszę to zrobić dla każdej maszyny. Naprawię to na stałe dla danej konfiguracji włóczęgów przy użyciu centów?
Pol
Po prostu musiałem zaktualizować vagrant do wersji 1.8.6, aby mieć 1.8.5, w którym utrzymywał się błąd
Pol
42

Uruchom następujące polecenia na maszynie gościa / maszynie wirtualnej:

wget https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub -O ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown -R vagrant:vagrant ~/.ssh

Następnie zatrzymaj się włóczęgami. Spowoduje to usunięcie i ponowne wygenerowanie kluczy prywatnych.

(Te kroki zakładają, że już utworzyłeś lub masz już katalogi ~ / .ssh / i ~ / .ssh / authoris_keys w swoim katalogu domowym).

Raja Ehtesham
źródło
26

Z mojego doświadczenia wynika, że ​​był to zaskakująco częsty problem z nowymi maszynami włóczęgami. Zdecydowanie najłatwiejszym sposobem rozwiązania tego problemu, zamiast zmieniać samą konfigurację, jest ręczne utworzenie wymaganych kluczy ssh na kliencie, a następnie użycie klucza prywatnego na hoście.

  1. Zaloguj się do vagrant machine: vagrant sshużyj domyślnego hasła vagrant.
  2. Utwórz klucze SSH: na przykład ssh-keygen -t rsa -b 4096 -C "vagrant"( zgodnie z zaleceniami odpowiedniego przewodnika GitHub ).
  3. Zmień nazwę pliku klucza publicznego (domyślnie id_rsa.pub), zastępując starą: mv .ssh/id_rsa.pub .ssh/authorized_keys.
  4. Usługa przeładować ssh w przypadku potrzebne: sudo service ssh reload.
  5. Skopiuj plik klucza prywatnego (domyślnie id_rsa) na komputer hosta: na przykład użyj dobrej kombinacji cat i schowka, maluj cat .ssh/id_rsai kopiuj (muszą istnieć lepsze sposoby, wymyśl jeden!).
  6. Wyloguj z Vagrant maszyny: logout.
  7. Znajdź bieżący klucz prywatny używany przez vagranta, patrząc na jego konfigurację: vagrant ssh-config(poszukaj na przykład ÌdentityFile "/[...]/private_key".
  8. Zastąp bieżący klucz prywatny tym, który utworzyłeś na komputerze głównym: na przykład nano /[...]/private_keyi wklej ze schowka, jeśli wszystko inne zawiedzie. ( Pamiętaj jednak, że jeśli twój klucz_prywatny nie jest specyficzny dla projektu, ale współdzielony przez wiele maszyn włóczęgów, lepiej skonfiguruj ścieżkę samodzielnie, aby nie przerywać innych doskonale działających maszyn! Zmiana ścieżki jest tak prosta, jak dodanie linii config.ssh.private_key_path = "path/to/private_key"do pliku Vagrantfile. ) Ponadto, jeśli używasz maszyny wygenerowanej przez PuPHPet , możesz zapisać swój klucz prywatny do pliku puphpet/files/dot/ssh/id_rsai zostanie on automatycznie dodany do konfiguracji ssh Vagrantfile.
  9. Przetestuj konfigurację: vagrant sshpowinna teraz działać.

W takim przypadku pogratuluj sobie, logoutbiegnij w vagrant provisionrazie potrzeby i wykonuj znaczące zadanie.

Jeśli nadal masz problemy, przydatne może być dodanie flagi gadatliwości do polecenia ssh, aby ułatwić debugowanie. Możesz to przekazać (lub dowolną inną opcję) po podwójnym myślniku. Na przykład wpisanie vagrant ssh -- -v. Możesz dodać tyle v, ile potrzebujesz, każdy poda więcej informacji.

sankari
źródło
Ta odpowiedź mi pomogła. Chcę tylko podzielić się moim doświadczeniem: w jakiś sposób (prawdopodobnie podczas instalacji Capistrano, ale nie jest to potwierdzone) mój plik authorised_key został usunięty z mojej maszyny wirtualnej gościa. Odtworzenie go za pomocą tych kroków zadziałało i mogę teraz ssh bez pytania o hasło. Dzięki.
Martin Joiner
Po usunięciu obu kluczy (publicznego / prywatnego) z komputera hosta udało mi się powtórzyć i rozwiązać ten proces
vrwired
Korzystanie z Git przyspiesza przesyłanie zawartości tego pliku.
lloan
1
ten zadziałał dla mnie po tym, jak cokolwiek innego próbowałem, nie powiodło się ... wielkie dzięki!
nikolas
To zadziałało dla mnie. Jedyną rzeczą, którą zrobiłem inaczej, było ssh [email protected] -p 22 (password: vagrant)zalogowanie się do VM, ponieważ vagrant sshnie działało dla mnie. 10.0.0.0to prywatny adres IP, który ustawiłem w moim vagrantfile.
turrican_34
11

Może się to również zdarzyć, jeśli próbujesz zmusić maszynę wirtualną do domyślnego używania użytkownika root dla SSH ...

Na przykład taka konfiguracja w pliku Vagrantfile może spowodować ten błąd:

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

Rozwiązanie: Skomentuj te wiersze i spróbuj ponownie!

Brad Parks
źródło
2
tylko dla mnie ustawienie config.ssh.username = "vagrant" i config.ssh.password = "
vagrant" załatwiło sprawę
8

Problem Otrzymałem błędy uwierzytelniania ssh na skonfigurowanym urządzeniu. Oryginał działał dobrze.

Problem polegał na tym, że brakowało mi klucza prywatnego w .vagrant/machines/default/virtualbox/private_key. Skopiowałem klucz prywatny z tej samej względnej lokalizacji z oryginalnego pudełka i Violi!

GP89
źródło
Dodam, że jak każdy dobry programista sprawdzamy .vagrantpliki do gita ... i jako taki, szybki git checkoutwspomniany plik ratuje dzień!
Ian Vaughan
8

Znalazłem sposób na obejście tego bałaganu z kluczami w Win 8.2, gdzie nie udało mi się zastosować żadnej z wymienionych tutaj metod. Może być interesujące, że dokładnie ta sama kombinacja VirtualBox, Vagrant i box działa w Win 7 Ultimate bez żadnych problemów.

Przełączyłem się na uwierzytelnianie za pomocą hasła, dodając następujące polecenia w pliku Vagrantfile:

config.ssh.password = "vagrant"
config.ssh.insert_key = false

Zwróć uwagę, że nie jestem pewien, czy to jedyne wymagane zmiany, ponieważ już to zrobiłem:

  1. Wygenerowałem nową parę kluczy RSA i odpowiednio zmieniłem plik allowed_keys (wszystko na maszynie wirtualnej, zobacz sugestie powyżej i gdzie indziej)

  2. Skopiowałem klucz prywatny do tego samego katalogu, w którym znajduje się plik Vagrantfile i dodałem

     config.ssh.private_key_path = "./id_rsa"
    

Ale uważam, że te zmiany były nieistotne. Spędziłem dużo czasu próbując, więc nie zmieniłem konfiguracji roboczej z oczywistych powodów :)

Michael
źródło
5

Nie możesz uruchomić włóczęgi, ponieważ utknął i przekroczył limit czasu?

Niedawno miałem „wypadek wody w laptopie” i musiałem przejść na nowy (przy okazji na MAC).

Z powodzeniem uruchomiłem wszystkie moje projekty oprócz tego, który używał włóczęgi.

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 8000 (guest) => 8877 (host) (adapter 1)
    default: 8001 (guest) => 8878 (host) (adapter 1)
    default: 8080 (guest) => 7777 (host) (adapter 1)
    default: 5432 (guest) => 2345 (host) (adapter 1)
    default: 5000 (guest) => 8855 (host) (adapter 1)
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Authentication failure. Retrying...
    default: Warning: Authentication failure. Retrying...
    default: Warning: Authentication failure. Retrying...

Nie mógł się uwierzytelnić, ponawiał próby i ostatecznie się poddał.

** Oto jak przywróciłem go do formy w 3 krokach: **

1 - Znajdź plik tożsamości używany przez włóczęgę: $ vagrant ssh-config

Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/ned/.vagrant.d/insecure_private_key
  IdentitiesOnly yes
  LogLevel FATAL

2 - Sprawdź klucz publiczny w IdentityFile: $ ssh-keygen -y -f /Users/<user-name>/.vagrant.d/insecure_private_key Zastąp '<user-name>'swoim użytkownikiem. Będzie wyglądać mniej więcej tak:

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAA...9gE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==

3 - Zaloguj się do maszyny włóczęgów za pomocą hasła „vagrant”: $ ssh -p 2222 -o UserKnownHostsFile=/dev/null [email protected]

The authenticity of host '[127.0.0.1]:2222 ([127.0.0.1]:2222)' can't be established.
RSA key fingerprint is dc:48:73:c3:18:e4:9d:34:a2:7d:4b:20:6a:e7:3d:3e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[127.0.0.1]:2222' (RSA) to the list of known hosts.
[email protected]'s password: vagrant
Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-31-generic x86_64)
...

4 - Dodaj klucz publiczny do pliku allowed_keys. $echo "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAA...9gE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==" > /home/vagrant/.ssh/authorized_keys ssh-rsa

5 - Wyjdź (crtl + d) i zatrzymaj pojemnik wędrowca i przynieś go z powrotem. $ vagrant halt $vagrant up

Miejmy nadzieję, że teraz będziesz miał ręce w powietrzu ...

Mam to, z niewielką poprawką, z artykułu Neda Batcheldersa - Ned, jesteś mistrzem !!

Anas
źródło
Pan jest geniuszem, tak jak Ned Batchelders. Tak czy inaczej, rozwiązało to mój problem!
Adsy2010,
4

dla mnie problem ten został rozwiązany przez zmianę uprawnień do folderu .ssh w katalogu domowym vagrant (tj. „~ vagrant / .ssh”). Wydaje mi się, że pomieszałem uprawnienia podczas konfigurowania kluczy ssh dla mojej aplikacji.

Wygląda na to, że plik „Authorized_keys” musi mieć wartość „rw” tylko dla użytkownika „vagrant”, więc „chmod 600 Authorized_keys”; to samo dotyczy samego katalogu i jego rodzica:

więc:

chmod 600 authorized_keys
chmod 700 .
chmod 700 ..

Dopiero po przywróceniu wszystkich tych uprawnień vagrant ssh zaczął ponownie działać.

Myślę, że ma to coś wspólnego z bezpieczeństwem ssh. Odmawia uznania certyfikatów, jeśli są w jakikolwiek sposób dostępne poza bieżącym użytkownikiem, więc próby logowania włóczęgów są odrzucane.

robert
źródło
Czasami nie mogę tego zmienić, po prostu uruchamiam sudo chmod 600 autoryzowane_klucze, ale nadal pozostaje niezmienione. Myślę, że ma to coś wspólnego z tym, że jest współdzielone również w systemie Windows.
Darius.V
Czasami dzieje się tak, gdy katalog jest w udziale, na przykład/vagrant/...
robert
1
Oprócz mojej odpowiedzi chciałbym zagłosować na tę odpowiedź. Na innej mojej maszynie był to dokładnie ten problem - zły właściciel katalogu /home/vagrant/.ssh. To było „root: root”, ale musi być „vagrant: vagrant”
Michael
4

Jeśli używasz domyślnej konfiguracji SSH w swoim VagrantFile i zacząłeś widzieć błędy uwierzytelniania SSH po ponownym skojarzeniu skrzynki maszyny wirtualnej z powodu awarii, spróbuj wymienić klucz publiczny na swoim komputerze włóczęgi.

Vagrant zastępuje klucz publiczny skojarzony z niezabezpieczoną parą kluczy prywatnych przy każdym wylogowaniu ze względów bezpieczeństwa. Jeśli nie wyłączyłeś poprawnie komputera, para kluczy publiczny / prywatny może stracić synchronizację, powodując błąd uwierzytelniania SSH.

Aby rozwiązać ten problem, po prostu załaduj bieżący niezabezpieczony klucz prywatny, a następnie skopiuj parę kluczy publicznych do pliku authorised_keys maszyny wirtualnej.

thk
źródło
3

To może być ostatnia odpowiedź na liście, ale to zadziałało dla mnie i nigdzie jej nie znalazłem, znalazłem ją sam po 2 dniach poszukiwań, więc lepiej spróbuj tego, jeśli nic innego nie działało do tej pory.

W moim przypadku problem pochodzi z mojego VirtualBox. Nie wiem, z jakiego powodu opcja została wyłączona i powinna być włączona.

wprowadź opis obrazu tutaj

Jak widać na obrazku, wystąpiły problemy sieciowe z moim VirtualBoxem i co musiałem zrobić, aby rozwiązać ten problem, to wybrać mój komputer, nacisnąć ustawienia, zakładkę sieci, a następnie upewnić się, że opcja Kabel podłączony został wybrany. W moim przypadku ta opcja nie została wybrana i nie udało mi się na tym kroku:

default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key

Najpierw pomyślałem, że port jest już używany, potem przeinstalowałem Vagranta i próbowałem też innych rzeczy, ale żadna z nich nie działała.

paulalexandru
źródło
3

Zdarzyło mi się to kilka razy i sposób, w jaki to rozwiązałem, był następujący:

  1. Sprawdź i upewnij się, że plik Vagrantfile ma poprawną ścieżkę klucza prywatnego:

    config.ssh.private_key_path = "/home/razvan/.ssh/id_rsa"

  2. Wykonaj polecenie> vagrant ssh w terminalu linux

  3. Na swojej maszynie włóczęgów przejdź do

    cd /home/vagrant/.ssh

i sprawdź, czy klucz ssh w pliku authorised_keys jest taki sam, jak ten, który masz na komputerze lokalnym w ~ / .ssh / id_rsa.pub. Jeśli nie, zamień ten z twojego vagranta Authorized_keys na ten z twojego lokalnego komputera znaleziony w ~ / .ssh / id_rsa.pub.

  1. Wczytaj ponownie Vagrant:

    włóczęga przeładuj

Mam nadzieję, że to pomoże komuś innemu. Twoje zdrowie!

Razvan
źródło
Nie mam folderu ~ / .ssh, co mam zrobić?
Ashish Karpe
@AshishKarpe utwórz go z uprawnieniami 700 i utwórz authorized_keysplik z uprawnieniami 600 w środku.
hogan
3

1. Znajdź klucz prywatny na hoście:

vagrant ssh-config
#

Wynik:

Host default
  ...
  Port 2222
  ...
  IdentityFile /home/me/.vagrant.d/[...]/virtualbox/vagrant_private_key
  ...

2. Zapisz ścieżkę klucza prywatnego i numer portu w zmiennych:

Użyj tych dwóch poleceń z wyjściem z góry:

pk="/home/me/.vagrant.d/.../virtualbox/vagrant_private_key"
port=2222
#

3. Wygeneruj klucz publiczny i prześlij go na komputer gościa:

Kopiowanie / makaron, bez zmian:

ssh-keygen -y -f $pk > authorized_keys
scp -P $port authorized_keys vagrant@localhost:~/.ssh/
vagrant ssh -c "chmod 600 ~/.ssh/authorized_keys"
rm authorized_keys
#
Nabil Kadimi
źródło
1
Tyle razy miałem opisywany problem, zwykle po spakowaniu, a następnie odrestaurowaniu pudełka Vagrant. Udało mi się dodać następującą konfigurację, aby poinstruować Vagranta, aby wstawił swój klucz publiczny do maszyny wirtualnej: config.ssh.username = "vagrant"; config.ssh.password = "vagrant"; config.ssh.insert_key = trueAle tym razem powyższa konfiguracja nic nie dała. Naprawdę nie wiem dlaczego, próbowałem debugować, dlaczego klucz nie jest włożony bez szczęścia. Więc skorzystałem z twojego rozwiązania i voila! To działa!
stz184
2

Rozwiązanie dla komputerów Mac:

  1. Dodano lokalny klucz ssh id_rsa do klucza prywatnego włóczęgi

    vi /Users//.vagrant/machines/default/virtualbox/private_key

    /Users//.ssh/id_rsa

  2. skopiowano klucz publiczny /Users//.ssh/id_rsa.pub na skrzynkę vagrant Authorized_keys

ssh vagrant@localhost -p 2222 (hasło: vagrant) ls -la cd .ssh

  1. chmod 0600 ~/.ssh/authorized_keys

  2. vagrant reload

Problem rozwiązany.

Dzięki

Parag Lohiya
źródło
1

również nie mógł wyjść poza:

domyślnie: metoda uwierzytelniania SSH: klucz prywatny

Kiedy użyłem GUI VirtualBox, powiedział mi, że wystąpiła niezgodność procesora systemu operacyjnego.

Aby uzyskać dalsze postępy włóczęgi, w ustawieniach BIOS-u musiałem przeciwdziałać intuicyjnie:

Wyłącz: wirtualizacja

Włącz: VT-X

Spróbuj zmienić te ustawienia w systemie BIOS.

Sklep
źródło
1

Przede wszystkim należy usunąć automatycznie wygenerowany plik insecure_private_key, a następnie zregenerować ten plik wpisując

vagrant ssh-config

następnie

vagrant halt
vagrant up

Powinno działać

Ahmet Karakaya
źródło
Próbowałem tego, ale nadal pojawia się błąd, ponieważ używam maszyny wirtualnej Ubuntu Virtual Box w środku, którą próbuję włóczęgi?
Ashish Karpe
#vagrant up Przełączanie maszyny 'default' na dostawcę 'virtualbox' ... ==> default: Wyczyszczenie wszystkich wcześniej ustawionych portów przekierowanych ... ==> default: Wyczyszczenie wszelkich wcześniej ustawionych interfejsów sieciowych ... ==> default: Przygotowywanie interfejsów sieciowych na podstawie konfiguracji ... domyślnie: Adapter 1: nat ==> default: Forwarding ports ... default: 22 (guest) => 2222 (host) (adapter 1) ==> default: Booting VM .. . ==> default: Oczekiwanie na uruchomienie komputera. Może to zająć kilka minut ... domyślnie: adres SSH: 127.0.0.1:2222 domyślnie: nazwa użytkownika SSH: vagrant wartość domyślna: metoda uwierzytelniania SSH: klucz prywatny
Ashish Karpe
1

Rozwiązałem problem w następujący sposób. 1. Utwórz nowy klucz SSH za pomocą Git Bash

$ ssh-keygen -t rsa -b 4096 -C "vagrant@localhost"
# Creates a new ssh key, using the provided email as a label
Generating public/private rsa key pair.
  1. Gdy pojawi się monit „Wprowadź plik, w którym chcesz zapisać klucz”, naciśnij Enter. Akceptuje domyślną lokalizację pliku.

    Wprowadź plik, w którym chcesz zapisać klucz (/Users/[you]/.ssh/id_rsa): [Wciśnij enter]

  2. Po wyświetleniu monitu wpisz bezpieczne hasło. Możesz zostawić puste i nacisnąć Enter, jeśli nie potrzebujesz hasła.

    Wprowadź plik, w którym chcesz zapisać klucz (/Users/[you]/.ssh/id_rsa): [Wciśnij enter]

  3. Aby połączyć się z maszyną wirtualną Vagrant, wpisz następujące polecenie

    ssh vagrant @ localhost -p 2222

Gdy pojawi się następujący komunikat, wpisz „tak” i naciśnij enter.

The authenticity of host 'github.com (192.30.252.1)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?
  1. Teraz, aby ustanowić typ połączenia SSH: $ vagrant ssh

  2. Skopiuj klucz publiczny hosta do pliku allowed_keys w Vagrant VM. W tym celu przejdź do folderu „Users / [you] /. Ssh” i skopiuj zawartość z pliku id_rsa.pub na komputerze hosta, a następnie do pliku „~ / .ssh / authoris_keys” w Vagrant VM.

  3. Zmień uprawnienia do folderu SSH i pliku allowed_keys w Vagrant VM
  4. Zrestartuj vagrant za pomocą: $ vagrant reload
Kryszna
źródło
0

Uruchomiłem maszynę, a następnie:

vagrant ssh-config

Otrzymałem następujące informacje:

Host default HostName 127.0.0.1 User vagrant Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /Users/my-user-name/Documents/PHP-Projects/my-php-project/puphpet/files/dot/ssh/id_rsa IdentityFile /Users/my-user-name/.vagrant.d/insecure_private_key IdentitiesOnly yes LogLevel FATAL

Potem uciekłem

cat ~/.ssh/id_rsa > /Users/my-user-name/Documents/PHP-Projects/my-php-project/puphpet/files/dot/ssh/id_rsa

Od tego momentu maszyna została uruchomiona

  • El Capitan 10.11.1 Beta (15B38b)
  • Virtual Box 5.0.8 r103449
  • Vagrant 1.7.4
Radek
źródło
0

Pomiędzy wszystkimi odpowiedziami jest wiele dobrych rzeczy do wypróbowania. Dla kompletności, jeśli ty

ssh vagrant@localhost -p 2222

jak sugeruje @Bizmate, ale nie udaje się, upewnij się, że tak

AllowUsers vagrant

w /etc/ssh/sshd_configmaszynie gościa / włóczęgi.

Don Smith
źródło
0

Używam Vagranta z konfiguracją Puphpet od maja 2015 roku i mam ten problem. Wygląda na to, że wygenerowana konfiguracja nie obsługuje zachowania Vagrant 1.7.4 (a może nieco wcześniej?) Polegającego na regeneracji kluczy ssh, jeśli wykryje niezabezpieczony klucz.

Rozwiązałem to, dodając następujący fragment w moim pliku Vagrantfile wygenerowanym przez Puphpet (konfiguracja lokalna) w klauzuli „if File.file? (CustomKey)”:

config.ssh.insert_key = false

Odniesienie do zatwierdzenia

Elias Kouskoumvekakis
źródło
0

To wszystkie poprawne kroki, które wykonałem, aby naprawić ten poniższy problem, wystąpiły po uruchomieniu polecenia vagrant up.

Oto kroki, które podjąłem

  1. utwórz folder. np. F: \ projekty
  2. Otwórz ten folder w git bash i uruchom to polecenie ssh-keygen -t rsa -b 4096 -C "[email protected]" (podaj prawidłowy adres e-mail)
  3. Następnie wygeneruj parę kluczy w dwóch osobnych plikach w folderze projektu. np. projekt (plik klucza prywatnego), project.pub (plik klucza publicznego)
  4. Przejdź do tej lokalizacji C: \ Users \ acer.vagrant.d i znajdź plik insecure_private_key
  5. Uzyskaj kopię zapasową pliku i skopiuj zawartość nowo utworzonego klucza prywatnego i wklej go do pliku insecure_private_key. Następnie skopiuj insecure_private_key i wklej go również w tej lokalizacji.
  6. Teraz włócz się po lokalizacji swojego projektu. po wygenerowaniu powyższego problemu wpisz vagrant ssh i wejdź do środka podając nazwę użytkownika i hasło. (domyślnie nazwa użytkownika i hasło są ustawione jako włóczęga)
  7. Wejdź do środka do tej lokalizacji cd /home/vagrant/.ssh i wpisz mv authoris_keys authorised_keys_bk
  8. Następnie wpisz ls -al i wpisz vi autoryzowane_klucze, aby otworzyć edytor vi pliku allowed_keys.
  9. Otwórz wygenerowany klucz publiczny z notepad ++ (project.pub) i skopiuj zawartość Następnie naciśnij i na git bash, aby włączyć tryb wstawiania w edytorze vi, kliknij prawym przyciskiem myszy i wklej. Po naciśnięciu klawisza Escape, aby wyjść z trybu wstawiania
  10. : wq! aby zapisać plik i wpisać ls -al
  11. Następnie uprawnienia są ustawione jak poniżej, nie ma potrzeby zmiany drwx ------. 2 włóczęga włóczęga 4096 13 lutego 15:33. drwx ------. 4 włóczęga włóczęga 4096 13 lutego 14:04 .. -rw -------. 1 włóczęga włóczęga 743 13 lutego 14:26 author_klucze -rw -------. 1 root root 409 13 lutego 13:57 authoris_keys_bk -rw -------. 1 vagrant vagrant 409 Jan 2 23:09 Authorized_keys_originial W przeciwnym razie wpisz chmod 600 Authorized_keys i wpisz też to polecenie chown vagrant: vagrant Authorized_keys
  12. Na koniec zatrzymaj włóczęgę i ponownie wróć.

************************ TO DLA MNIE W porządku ******************** ***********

Vayodya Tamari
źródło
0

Tylko dla tych ludzi, którzy byli idiotami takimi jak ja, albo coś dziwnego stało się z ich włóczęgą maszyną. Ten błąd może również wystąpić, gdy zmienisz uprawnienia katalogu domowego użytkownika włóczęgi (celowo lub przypadkowo).

Zamiast tego możesz zalogować się (jak opisano w innych postach) za pomocą hasła („vagrant”), a następnie uruchomić następujące polecenie, aby naprawić uprawnienia.

sudo chown -R vagrant:vagrant /home/vagrant

Wtedy powinno być możliwe ponowne zalogowanie się bez podawania hasła.

TL; DR: Uprawnienia do folderu domowego włóczęgi są nieprawidłowe.

Aeolun
źródło
0

Prosty:

homestead destroy
homestead up

Edytuj (nie tak proste, jak pierwsza myśl):

Problem polegał na tym, że nowe wersje użytkowania zagród php7.0 i kilka innych rzeczy. Aby uniknąć tego bałagan upewnij się ustawić verisonw Homestead.yml:

version: "0"
Stephen
źródło
0

Rozwiązałem ten problem, uruchamiając polecenia w systemie Windows 7 CMD, jak podano w tym tutaj jest link ostatni post w tym wątku,

https://github.com/mitchellh/vagrant/issues/6744

Some commands that will reinitialize various network states:
Reset WINSOCK entries to installation defaults : netsh winsock reset catalog
Reset TCP/IP stack to installation defaults : netsh int ip reset reset.log
Flush DNS resolver cache : ipconfig /flushdns
Renew DNS client registration and refresh DHCP leases : ipconfig /registerdns
Flush routing table : route /f
Shehzad Nizamani
źródło
0

Przez ostatnie kilka dni biłem się w głowę na przepakowanym pudełku bazowym. (Mac OS X, El Capitan)

Zgodnie z procedurą @Radek wykonałem 'vagrant ssh-config' na skrzynce źródłowej i otrzymałem:

...
/Users/Shared/dev/<source-box-name>/.vagrant/machines/default/virtualbox/private_key
...

Na nowej kopii to polecenie dało mi:

...
IdentityFile /Users/<username>/.vagrant.d/insecure_private_key
...

Więc właśnie dodałem tę linię w nowej kopii:

...
config.ssh.private_key_path = "/Users/Shared/dev/<source-box-name>/.vagrant/machines/default/virtualbox/private_key"
...

Nie jest idealny, ale mogę żyć dalej.

rickb
źródło
0

Kolejne proste rozwiązanie, w systemie Windows przejdź do pliku Homestead / Vagrantfile i dodaj te linie, aby połączyć się z nazwą użytkownika / hasłem zamiast klucza prywatnego:

config.ssh.username = "vagrant"  
config.ssh.password = "vagrant"  
config.ssh.insert_key = false 

Ostatecznie część pliku będzie więc wyglądać następująco:

if File.exists? homesteadYamlPath then
    settings = YAML::load(File.read(homesteadYamlPath))
elsif File.exists? homesteadJsonPath then
    settings = JSON.parse(File.read(homesteadJsonPath))
end

config.ssh.username = "vagrant"  
config.ssh.password = "vagrant"  
config.ssh.insert_key = false 

Homestead.configure(config, settings)

if File.exists? afterScriptPath then
    config.vm.provision "shell", path: afterScriptPath, privileged: false
end

Mam nadzieję, że to pomoże ..

Mahmoud Mostafa
źródło
0

Próbowałem tego na mojej maszynie VM

zmień uprawnienia / home / vagrant (zrobił na tym chmod 700)

teraz mogę ssh bezpośrednio do moich pudełek

ajay_fuel_stock_lamp_stack
źródło