Vagrant ssh kimlik doğrulama hatası


148

Ssh kimlik doğrulaması ile ilgili sorun:

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

Elimden Ctrl+Cdışarı kimlik doğrulama döngünün ardından başarıyla elle ssh.

Konuk kutusunda aşağıdaki adımları gerçekleştirdim:

  • Etkin Remote Loginiçin All Users.

  • Düzenlendi ~/.sshile dizin 0700izinleri.

  • Düzenlendi ~/.ssh/authorized_keysdosyayı 0600izinleri.

  • Yapıştırılan bu genel anahtar içine~/.ssh/authorized_keys

Ayrıca, Vagrantfile'daki şu hattı kullanarak genel (köprülü) ağ yerine özel (hostonly) bir ağ kullanmayı denedim:

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

Aynı çıktıyı alıyorum (hariç Adapter 2: hostonly) ama sonra elle ssh yapamıyorum.

Ben de denedim config.vm.network "private_network", ip: "10.0.0.100".

Ayrıca config.ssh.passwordVagrantfile'da ayarlamayı da denedim . Bu çıktı verir SSH auth method: passwordancak yine de kimlik doğrulaması yapmaz.

Ayrıca kutuyu yeniden oluşturmayı ve yukarıdakilerin hepsini yeniden kontrol etmeyi denedim.

Görünüşe göre diğerleri bu konfigürasyonda başarılı olmuş , bu yüzden yanlış yaptığım bir şey olmalı.

Ben bu konuyu buldum ve GUI etkin, ama bu yardım değil.

Yanıtlar:


1

İlk ağ arayüzünüzün NAT olduğundan emin olun. Diğer ikinci ağ arayüzü, kutuyu oluştururken istediğiniz herhangi bir şey olabilir. Google başlığında tartışıldığı gibi, Vagrant kullanıcısını unutmayın.

İyi şanslar.


172

Genel bilgi için: varsayılan olarak ssh-connect'i kullanabilirsiniz.

kullanıcı: vagrantşifre:vagrant

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

Öncelikle şunu deneyin:insecure_private_key makine yapılandırmanızda hangi serseri olduğunu görmek için

$ vagrant ssh-config

Misal:

$ 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

İkincisi, şunu yapın:insecure_private_key Kişisel sistem özel anahtarınızın içeriğiyle dosya içeriğini değiştirin

Veya şunu kullanın: Vagrant dosyasına ekleyin:

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 yerel özel anahtarınız mı
  2. Özel anahtarınız yerel ssh aracısı tarafından kullanılabilir olmalıdır. İle kontrol edebilirsiniz ssh-add -L. Listelenmemişse, şununla ekleyin:ssh-add ~/.ssh/id_rsa
  3. Genel anahtarınızı ~/.ssh/authorized_keysVagrant VM'ye eklemeyi unutmayın . Kopyalayıp yapıştırarak veya ssh-copy-id (kullanıcı: rootşifre: vagrantbağlantı noktası: 2222) gibi bir araç kullanarak yapabilirsiniz.ssh-copy-id '-p 2222 root@127.0.0.1'

Hala çalışmıyorsa şunu deneyin:

  1. insecure_private_keyDosyayı şuradan kaldır :c:\Users\USERNAME\.vagrant.d\insecure_private_key

  2. Çalıştır vagrant up(serseri yeni bir insecure_private_keydosya oluşturacak )

Diğer durumlarda, sadece set yararlıdır forward_agent içinde Vagrantfile :

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

İşe yarar:

Configurating budala ile olabilir git-scm.com

Bu programı kurduktan ve kişisel sistem özel anahtarı oluşturduktan sonra profil yolunuzda olacaktır:c:\users\USERNAME\.ssh\id_rsa.pub

Not: Son olarak - Windows 10'da Ubuntu'ya bakmanızı öneririm


4
benim durumumda, temel config.ssh.private_key_path = "~/.ssh/id_rsa"hazırlığın çalışması için bu satırı kaldırmak zorunda kaldığım için sorun oldu
holms

Bunların hepsi işe yaradı, ancak aynı zamanda bilinen ana bilgisayarlardaki girdimi de kaldırmak zorunda kaldım. Konumları taşırken ve oturum açarken sorunlar yaşıyordum.
Pumphouse

@shilovk +1 Teşekkür ederim, çok teşekkür ederim, çok teşekkür ederim. "İkincisi, yap" hile yaptı. Tekrar çok teşekkür ederim adamım.
whitesiroi

Bu beni doğru yönü gösterdi, benim durumumda tek yapmam gereken .vagrant / machines / default / virtualbox / private_key dosyasını silmek ve serseri çalıştırdıktan sonra dosyayı doğru olanla değiştirmekti - dosya sadece durumda
andrux

İlk ve en önemli adım, BIOS ayarlarınızı kontrol etmektir, Sanallaştırmanın etkinleştirildiğinden emin olun.
Bahman.

83

Yukarıdakilerin hiçbiri benim için işe yaramadı. Her nasılsa kutu, serseri kullanıcı authorised_keys dosyasına yanlış genel anahtar eklenmiş .

Hala serseri parolayla (parola serseri) kutuda ssh yapabiliyorsanız, yani

ssh vagrant@localhost -p 2222

daha sonra https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub adresinden genel anahtar içeriğini aşağıdaki komutu kullanarak authorised_keys dosyasına kopyalayın

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

İşiniz bittiğinde VM'den çıkın ve vagrant ssh'yi tekrar deneyin. Şimdi çalışmalı.


4
vagrant reloadyetkili_keys dosyasını güncelledikten sonra çalıştırın . Vagrant, güvenli olmayan anahtarı otomatik olarak algılayacak ve sizin için yeniden oluşturacaktır. Daha sonra çalışmalı.
ProfileTwist

47

Bu sorunu vagrant 1.8.5'te yaşıyorsanız, github'daki bu ileti dizisine bakın:

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

Temelde bir izin sorunundan kaynaklanıyor, geçici çözüm sadece

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

sonra

vagrant reload 

Bilginize: Bu sorun yalnızca CentOS'u etkiliyor, Ubuntu iyi çalışıyor.


Bir serseri dosya için 5 makinem olduğunu varsayalım. Her yeniden çalıştırdığımda bunu her makine için yapmam gerekiyor. Bunu centos kullanarak verilen serseri kurulum için kalıcı olarak düzeltir miyim?
Pol

Serseri 1.8.6 sürümüne yükseltmek zorunda kaldım, hatanın mevcut olduğu 1.8.5'e sahip olmak için kullanın
Pol

43

Konuk makinede / sanal makinede aşağıdaki komutları çalıştırın:

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

Sonra serseri durun. Bu, özel anahtarlarınızı kaldıracak ve yeniden oluşturacaktır.

(Bu adımlar, ana klasörünüz altında ~ / .ssh / ve ~ / .ssh / yetkili_keys dizinlerini zaten oluşturduğunuzu veya zaten sahip olduğunuzu varsayar.)


26

Deneyimlerime göre, bu yeni serseri makinelerde şaşırtıcı derecede sık görülen bir problemdi. Yapılandırmanın kendisini değiştirmek yerine bunu çözmenin en kolay yolu, gerekli ssh anahtarlarını istemcide manuel olarak oluşturmak ve ardından ana bilgisayardaki özel anahtarı kullanmaktır.

  1. Serseri makineye giriş yapın:, vagrant sshvarsayılan şifreyi kullanın vagrant.
  2. Ssh anahtarları oluşturun: örneğin ssh-keygen -t rsa -b 4096 -C "vagrant"( GitHub'ın ilgili kılavuzunda önerildiği gibi ).
  3. Eskisini geçersiz kılma, (varsayılan id_rsa.pub tarafından) genel anahtar dosyasını yeniden adlandırın: mv .ssh/id_rsa.pub .ssh/authorized_keys.
  4. Durumunda Yeniden yükle ssh servisi gerekli: sudo service ssh reload.
  5. Özel anahtar dosyasını (varsayılan olarak id_rsa) ana makineye kopyalayın: örneğin, kedi ve pano cat .ssh/id_rsa, boyama ve kopyalamanın ince bir kombinasyonunu kullanın (daha iyi yollar olmalı, bir tane icat edin!).
  6. Serseri makineden Çıkış: logout.
  7. Yapılandırmasına bakarak vagrant tarafından kullanılan geçerli özel anahtarı bulun: vagrant ssh-config(örneğin ÌdentityFile "/[...]/private_key".
  8. Geçerli özel anahtarı, ana makinede oluşturduğunuzla değiştirin: örneğin, nano /[...]/private_keyher şey başarısız olursa panodan yapıştırın. ( Not , ancak, private_key proje spesifik ancak birden serseri makineler tarafından paylaşılan değilse, daha iyi diğer mükemmel çalışıyor makineleri kırılmaz amacıyla yolunu kendin yapılandırmanız! Yolunu değiştirme satırı ekleyerek olarak basit gibidir config.ssh.private_key_path = "path/to/private_key"Vagrantfile içine. Ayrıca, PuPHPet tarafından oluşturulan makineyi kullanıyorsanız , özel anahtarınızı dosyada saklayabilirsiniz puphpet/files/dot/ssh/id_rsave otomatik olarak Vagrantfile'ın ssh yapılandırmasına eklenir.
  9. Kurulumu test edin: vagrant sshşimdi çalışmalı.

Böyle bir durumda kendinizi tebrik edin, gerekirse logoutkoşun vagrant provisionve elinizdeki anlamlı işe devam edin.

Hala sorunlarla karşılaşırsanız, hata ayıklamayı kolaylaştırmak için ssh komutuna ayrıntılı bayrak eklemek kullanışlı olabilir. Bunu (veya bu konuda başka herhangi bir seçeneği) çift tireden sonra geçebilirsiniz. Örneğin, yazarak vagrant ssh -- -v. İhtiyaç duyduğunuz kadar v eklemekten çekinmeyin, her biri size daha fazla bilgi verecektir.


Bu cevap bana yardımcı oldu. Sadece deneyimimi paylaşmak için: Bir şekilde (muhtemelen Capistrano kurulumu sırasında, ancak bu onaylanmadı) auth_key dosyam konuk sanal makinemde silinmişti. Bu adımları kullanarak yeniden oluşturmak işe yaradı ve şimdi şifre istemi olmadan ssh yapabilirim. Teşekkürler.
Martin Joiner

Her iki anahtarı da (genel / özel) ana makineden kaldırdıktan sonra, bu işlemi yeniden
yapıp çözebildim

Git kullanmak, bu dosya içeriğinin daha hızlı aktarılmasını sağlar.
lloan

1
Bu benim için denediğim her şeyden sonra çalıştı, başarısız oldu .. çok teşekkürler!
nikolas

Bu benim için çalıştı. Farklı yaptığım tek şey, benim için çalışmadığı ssh vagrant@10.0.0.0 -p 22 (password: vagrant)için VM'ye giriş yapmaktı vagrant ssh. 10.0.0.0benim ayarladığım özel ip adresidir vagrantfile.
turrican_34

11

Bu, sanal makinenizi SSH için varsayılan olarak bir kök kullanıcı kullanmaya zorladığınızda da olabilir ...

Örneğin, Vagrantfile dosyanızda buna benzer bir yapılandırma şu hataya neden olabilir:

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

Çözüm: Bu satırları yorumlayın ve tekrar deneyin!


2
benim için sadece config.ssh.username = "vagrant" ve config.ssh.password = "vagrant" ayarı yapmak hile yaptı
psychok7

8

Sorun Sağladığım bir kutuda ssh kimlik doğrulama hatalarını alıyordum. Orijinal iyi çalışıyordu.

Benim için sorun, özel bir anahtarın eksik olmasıydı .vagrant/machines/default/virtualbox/private_key. Özel anahtarı orijinal kutudan ve Viola'dan aynı göreceli konumdan kopyaladım!


Eklemek isterim ki, herhangi bir iyi geliştirici olarak, .vagrantdosyaları git'e kontrol ediyoruz ... ve bu nedenle, git checkoutsöz konusu dosyanın bir kısmı günü kurtarır!
Ian Vaughan

8

Burada bahsedilen yöntemlerin hiçbirinde başarılı olamadığım Win 8.2'deki anahtarlarla karışıklığın etrafında bir yol buldum. VirtualBox, Vagrant ve kutunun aynı kombinasyonunun Win 7 Ultimate üzerinde sorunsuz bir şekilde çalışması ilginç olabilir.

Vagrantfile'a aşağıdaki komutları ekleyerek şifre kimlik doğrulamasına geçtim:

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

Bunun gerekli olan tek değişiklik olduğundan emin olmadığımı unutma çünkü zaten yaptım:

  1. Yeni bir RSA anahtar çifti oluşturdum ve yetkili_keys dosyasını buna göre değiştirdim (tümü sanal makinede, yukarıdaki ve başka yerdeki önerilere bakın)

  2. Özel anahtarı Vagrantfile'ın bulunduğu dizine kopyaladım ve ekledim

     config.ssh.private_key_path = "./id_rsa"
    

Ancak bu değişikliklerin alakasız olduğuna inanıyorum. Denemek için çok zaman harcadım, bu yüzden çalışma konfigürasyonunu bariz nedenlerle değiştirmedim :)


5

Sıkıştığı ve zaman aşımına uğradığı için serseri koşamıyor mu? Son zamanlarda bir "dizüstü bilgisayarda su olayı" yaşadım ve yenisine geçmek zorunda kaldım (bu arada bir MAC ile). Serseri kullanan projemin yanında tüm projelerimi başarıyla çalıştırdım.

$ 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...

Doğrulayamadı, tekrar tekrar denedi ve sonunda pes etti.


Bunu 3 adımda nasıl geri kazandım:

1 - IdentityFileVagrant tarafından kullanılanı bulun :

$ 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 - Şu konumdaki genel anahtarı kontrol edin IdentityFile:

$ ssh-keygen -y -f <path-to-insecure_private_key>

Bunun gibi bir şey çıktı:

ssh-rsa AAAAB3Nyc2EAAA...9gE98OHlnVYCzRdK8jlqm8hQ==

3 - Vagrant misafirine şifre ile giriş yapın vagrant:

ssh -p 2222 -o UserKnownHostsFile=/dev/null vagrant@127.0.0.1
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.
vagrant@127.0.0.1's password: vagrant
Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-31-generic x86_64)
...

NOT: serseri konuk disallow şifre doğrulaması için yapılandırılmış olup olmadığını Vbox' GUI, çift tıklama konuk adını gibi giriş açmaya gerek vagrant/vagranto zaman, sudo -sve düzenle /etc/ssh/sshd_configve için göz PasswordAuthentication no(genellikle dosyanın sonuna) hattı, değiştirin noile yes(ve yeniden başlatma sshd yani systemctl reload sshdveya /etc/init.d/sshd restart).

4 - Genel anahtarı /home/vagrant/authorized_keysdosyaya ekleyin .

$ echo "ssh-rsa AA2EAAA...9gEdK8jlqm8hQ== vagrant" > /home/vagrant/.ssh/authorized_keys

5 - Çıkış ( CTRL+ d) ve Vagrant misafirini durdurun ve ardından geri getirin.

ÖNEMLİ herhangi bir ön hazırlık aracı (örneğin Ansible vb.) Kullanırsanız , konuğunuzu yeniden başlatmadan önce devre dışı bırakın, çünkü Vagrant misafirinizin güvenli olmayan özel anahtar kullanımı nedeniyle yetkilendirilmediğini düşünecektir. Anahtarı yeniden yükleyecek ve ardından provizyonunuzu çalıştıracaktır!

$ vagrant halt
$ vagrant up

Umarım artık kollarınız havadadır ...

Bunu Ned Batchelders makalesinden küçük bir değişiklikle anladım - Ned sen şampiyonsun!


Siz bir dahisiniz ya da Ned Batchelders öyledir. Her iki durumda da sorunumu çözdü!
Adsy2010

4

benim için bu, serseri ev direktöründeki (yani "~ vagrant / .ssh") .ssh klasöründeki izinleri değiştirerek çözüldü. Sanırım uygulamam için ssh anahtarlarını ayarlarken izinleri karıştırdım.

Görünüşe göre 'yetkili_anahtarlar' dosyası sadece 'serseri' kullanıcı için 'rw' olmalıdır, bu yüzden "chmod 600 yetkili_keys"; aynısı dizinin kendisi ve üst öğesi için de geçerlidir:

yani:

chmod 600 authorized_keys
chmod 700 .
chmod 700 ..

Vagrant ssh , tüm bu izinleri geri aldıktan sonra tekrar çalışmaya başladı.

Sanırım ssh güvenliği ile ilgili bir şey. Geçerli kullanıcının dışında herhangi bir şekilde erişilebilirse sertifikaları tanımayı reddeder, bu nedenle serserilerin oturum açma girişimleri reddedilir.


Bazen değiştiremiyorum, sadece sudo chmod 600 yetkili_keys çalıştırıyorum ama yine de değişmeden kalıyor. Sanırım bunun pencerelerde de paylaşılacağı bir şey var.
Darius.V

Bazen bu, dizin bir paylaşımdaysa olur, örneğin/vagrant/...
robert

1
Cevabıma ek olarak bu cevaba oy vermek istiyorum. Benim başka bir makinemde sorun tam olarak bu problemdi - /home/vagrant/.ssh dizininin yanlış sahibi. Bu "kök: kök" idi, ancak "serseri: serseri" olmalı
Michael

4

VagrantFile'ınızda varsayılan SSH kurulumunu kullanıyorsanız ve çökme nedeniyle VM kutunuzu yeniden ilişkilendirdikten sonra SSH kimlik doğrulama hataları görmeye başladıysanız, serseri makinenizdeki genel anahtarı değiştirmeyi deneyin.

Vagrant, güvenlik nedenleriyle her çıkışta güvenli olmayan özel anahtar çiftiyle ilişkili genel anahtarı değiştirir. Makinenizi düzgün şekilde kapatmadıysanız, genel / özel anahtar çifti senkronizasyondan çıkarak SSH kimlik doğrulama hatasına neden olabilir.

Bu sorunu çözmek için, mevcut güvenli olmayan özel anahtarı yüklemeniz ve ardından genel anahtar çiftini sanal makinenizin yetkili_keys dosyasına kopyalamanız yeterlidir.


3

Bu listedeki son cevap olabilir ama bu benim için işe yaradı ve bu cevabı hiçbir yerde bulamadım, 2 günlük araştırmalardan sonra kendim buldum, bu yüzden şimdiye kadar sizin için başka hiçbir şey işe yaramadıysa daha iyi deneyin.

Benim durumumda sorun VirtualBox'ımdan geldi. Bir seçeneğin neden devre dışı bırakıldığını ve etkinleştirilmesi gerektiğini bilmiyorum.

görüntü açıklamasını buraya girin

Resimde görebileceğiniz gibi, VirtualBox'ımda bazı ağ sorunları vardı ve bu sorunu çözmek için yapmam gereken şey makinemi seçmek, ayarlara, ağ sekmesine basmak ve bundan sonra Kablo Bağlı seçeneğinin olduğundan emin olmaktı. seçildi. Benim durumumda bu seçenek seçilmedi ve bu adımda başarısız oldum:

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

Önce bağlantı noktasının zaten kullanımda olduğunu düşündüm, daha sonra Vagrant'ı yeniden yükledim ve başka şeyler de denedim ama hiçbiri benim için çalışmadı.


3

Bu birkaç kez başıma geldi ve çözme şeklim şuydu:

  1. Vagrantfile dosyanızın doğru özel anahtar yoluna sahip olduğunu kontrol edin ve emin olun:

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

  2. Linux terminalinde> vagrant ssh komutunu çalıştırın

  3. Serseri makinende şuraya git

    cd /home/vagrant/.ssh

ve yetkili_keys dosyasındaki ssh anahtarının ~ / .ssh / id_rsa.pub içindeki yerel makinenizde bulunan anahtarla aynı olup olmadığını kontrol edin. Senin birini yerine Değilse serseri senin üzerinde biriyle authorized_key'lerine yerel makine ~ / .ssh / id_rsa.pub bulundu.

  1. Vagrant'ı yeniden yükle:

    serseri yeniden yükleme

Umarım bu başka birine yardımcı olur. Şerefe!


~ / .Ssh klasörüm yok, o zaman ne yapmalıyım?
Ashish Karpe

@AshishKarpe bunu 700 izinle oluştur ve authorized_keysiçinde 600 izne sahip bir dosya oluştur .
Hogan

3

1. Ana bilgisayarda özel anahtarı bulun:

vagrant ssh-config
#

Çıktı:

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

2. Özel anahtar yolunu ve port numarasını değişkenlerde saklayın:

Yukarıdaki çıktıyla bu iki komutu kullanın:

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

3. Bir genel anahtar oluşturun ve bunu konuk makineye yükleyin:

Kopyala / makarna, değişiklik gerekmez:

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
#

1
Açıklanan problemi pek çok kez yaşadım, genellikle paketledikten ve ardından Vagrant kutusunu geri yükledikten sonra. Benim için işe yarayan şey, Vagrant'a genel anahtarını sanal makineye eklemesi talimatını vermek için aşağıdaki yapılandırmayı eklemekti: config.ssh.username = "vagrant"; config.ssh.password = "vagrant"; config.ssh.insert_key = trueAncak bu sefer yukarıdaki yapılandırma hiçbir şey yapmadı. Nedenini gerçekten bilmiyorum, anahtarın neden şanssız takılmadığını ayıklamaya çalıştım. Bu yüzden çözümünüze geri döndüm ve işte! İşe yarıyor!
stz184

2

Mac Çözümü:

  1. Serseri özel anahtara yerel ssh id_rsa anahtarı eklendi

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

    /Users//.ssh/id_rsa

  2. kopyalanan ortak anahtar /Users//.ssh/id_rsa.pub, serseri kutusu yetkili_keys

ssh vagrant@localhost -p 2222 (şifre: serseri) ls -la cd .ssh

  1. chmod 0600 ~/.ssh/authorized_keys

  2. vagrant reload

Sorun çözüldü.

Sayesinde


1

ayrıca ötesine geçemedi:

varsayılan: SSH kimlik doğrulama yöntemi: özel anahtar

VirtualBox GUI'yi kullandığımda, bana bir işletim sistemi işlemcisi uyuşmazlığı olduğunu söyledi.

Serserinin daha da ilerlemesini sağlamak için, BIOS ayarlarında sezgisel olarak ters düşmem gerekiyordu:

Devre Dışı Bırak: Sanallaştırma

Etkinleştir: VT-X

BIOS'unuzda bu ayarları değiştirmeyi deneyin.


1

Öncelikle otomatik olarak oluşturulmuş insecure_private_key dosyasını kaldırmalı, ardından bu dosyayı yazarak yeniden oluşturmalısınız.

vagrant ssh-config

sonra

vagrant halt
vagrant up

İşe yaramalı


Bunu denedim ama yine de hata alıyorum çünkü içinde serseri denediğim Ubuntu Virtual Box VM kullanıyorum?
Ashish Karpe

#vagrant up 'Virtualbox' sağlayıcısıyla makinenin 'varsayılan' özelliğini getiriyor ... ==> varsayılan: Önceden ayarlanmış tüm iletilmiş bağlantı noktalarını temizleme ... ==> varsayılan: Önceden ayarlanmış tüm ağ arabirimlerini temizleme ... ==> varsayılan: Yapılandırmaya göre ağ arabirimleri hazırlanıyor ... varsayılan: Bağdaştırıcı 1: nat ==> varsayılan: Yönlendirme bağlantı noktaları ... varsayılan: 22 (konuk) => 2222 (ana bilgisayar) (bağdaştırıcı 1) ==> varsayılan: Sanal Makineyi Önyükleme .. . ==> varsayılan: Makinenin önyüklemesi bekleniyor. Bu birkaç dakika sürebilir ... varsayılan: SSH adresi: 127.0.0.1:2222 varsayılan: SSH kullanıcı adı: serseri varsayılan: SSH kimlik doğrulama yöntemi: özel anahtar
Ashish Karpe

1

Sorunu aşağıdaki şekilde çözdüm. 1. Git Bash'i kullanarak yeni SSH anahtarı oluşturun

$ 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. "Anahtarın kaydedileceği bir dosya girin" istendiğinde Enter tuşuna basın. Bu, varsayılan dosya konumunu kabul eder.

    Anahtarı kaydedeceğiniz bir dosya girin (/Users/[you]/.ssh/id_rsa): [Enter tuşuna basın]

  2. Komut istemine güvenli bir parola yazın. Parolaya ihtiyacınız yoksa boş bırakabilir ve enter tuşuna basabilirsiniz.

    Anahtarı kaydedeceğiniz bir dosya girin (/Users/[you]/.ssh/id_rsa): [Enter tuşuna basın]

  3. Vagrant VM'nize bağlanmak için aşağıdaki komutu yazın

    ssh vagrant @ localhost -p 2222

Aşağıdaki mesajı aldığınızda "evet" yazın ve enter tuşuna basın.

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. Şimdi bir SSH bağlantı türü kurmak için: $ vagrant ssh

  2. Ana bilgisayar genel anahtarını Vagrant VM'deki yetkili_keys dosyasına kopyalayın. Bunun için, "Kullanıcılar / [siz] /. Ssh" klasörüne gidin ve ana makinedeki id_rsa.pub dosyasındaki içeriği kopyalayın ve Vagrant VM'deki "~ / .ssh / yetkili_keys" dosyasına yapıştırın.

  3. Vagrant VM'deki SSH klasörü ve yetkili_keys dosyasındaki izni değiştirin
  4. Serseri şununla yeniden başlat: $ vagrant yeniden yükle

0

Makineyi başlattım, sonra:

vagrant ssh-config

Aşağıdakileri aldım:

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

Sonra koştum

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

Makine buradan başlatıldı

  • El Capitan 10.11.1 Beta (15B38b)
  • Sanal Kutu 5.0.8 r103449
  • Serseri 1.7.4

0

Buradaki tüm yanıtların arasında denenecek çok şey var. Tamlık için, eğer siz

ssh vagrant@localhost -p 2222

@ Bizmate'in önerdiği ve başarısız olduğu gibi, sahip olduğunuzdan emin olun

AllowUsers vagrant

içinde /etc/ssh/sshd_configsenin konuk / serseri makinenin.


0

Mayıs 2015'ten itibaren bir Puphpet kurulumuyla Vagrant kullanıyorum ve bu sorunu yaşadım. Görünüşe göre, oluşturulan konfigürasyon, Vagrant 1.7.4 (veya belki biraz daha erken?), Güvenli olmayan bir anahtar algılarsa ssh anahtarlarını yeniden oluşturma davranışını işlemedi.

Kukla oluşturduğum Vagrantfile'a (yerel kurulum) "if File.file? (CustomKey)" yan tümcesine aşağıdakileri ekleyerek sorunu çözdüm:

config.ssh.insert_key = false

Referans kaydetme


0

Bu, bu feryat sorununu düzeltmek için izlediğim tüm doğru adımlar, vagrant up komutu çalıştırıldığında meydana geldi.

Bunlar takip ettiğim adımlar

  1. bir klasör oluşturun. örneğin F: \ projeler
  2. Bu klasörü git bash'da açın ve bu komutu çalıştırın ssh-keygen -t rsa -b 4096 -C "e-postanız@example.com" (geçerli bir e-posta adresi girin)
  3. Ardından proje klasöründe iki ayrı dosyada anahtar çifti üretilir. örneğin proje (özel anahtar dosyası), project.pub (genel anahtar dosyası)
  4. Bu C: \ Users \ acer.vagrant.d konumuna gidin ve insecure_private_key dosyasını bulun
  5. Dosyanın yedeğini alın ve yeni oluşturulan özel anahtarın içeriğini kopyalayın ve bunu insecure_private_key dosyasına yapıştırın. Ardından insecure_private_key'i kopyalayın ve bu konuma da yapıştırın.
  6. Şimdi proje lokasyonunuzda serseri olun. Yukarıdaki sorunu oluşturduktan sonra vagrant ssh yazın ve kullanıcı adı, şifre vererek içeri girin. (varsayılan olarak kullanıcı adı ve şifre serseri olarak ayarlanmıştır)
  7. Bu konuma cd /home/vagrant/.ssh gidin ve mv yetkili_keys yetkili_keys_bk yazın
  8. Sonra ls -al yazın ve açık yetkili_keys dosyası vi düzenleyicisi için vi yetkili_keys yazın.
  9. Notepad ++ (project.pub) 'den oluşturulan ortak anahtarı açın ve içeriği kopyalayın. Ardından vi düzenleyicide ekleme modunu etkinleştirmek için git bash üzerinde i tuşuna basın ve sağ tıklayıp yapıştırın. Ekleme modundan çıkmak için çıkış tuşuna bastıktan sonra
  10. : wq! dosyayı kaydetmek ve ls -al yazın
  11. Sonra izinler, drwx ------ değiştirmeye gerek yok gibi ayarlanır. 2 serseri serseri 4096 13 Şubat 15:33. drwx ------. 4 serseri serseri 4096 13 Şubat 14:04 .. -rw -------. 1 serseri serseri 743 Şubat 13 14:26 yetkili_keys -rw -------. 1 kök kök 409 13 Şubat 13:57 yetkili_keys_bk -rw -------. 1 serseri serseri 409 2 Ocak 23:09 yetkili_keys_originial Aksi takdirde, chmod 600 yetkili_keys yazın ve bu komutu çok chown vagrant yazın: serseri yetkili_keys
  12. Sonunda serseriyi durdurun ve serseriyi tekrar yukarı kaldırın.

************************ BU İŞ BENİM İÇİN GÜZEL ********************* ***********


0

Sırf benim gibi aptal olan ya da serseri makinelerine tuhaf bir şey olan insanlar için. Bu hata, serseri kullanıcının ana dizininin izinlerini değiştirdiğinizde de ortaya çıkabilir (kasıtlı olarak veya yanlışlıkla).

Bunun yerine şifreyi ('serseri') kullanarak (diğer yazılarda açıklandığı gibi) oturum açabilir ve ardından izinleri düzeltmek için aşağıdaki komutu çalıştırabilirsiniz.

sudo chown -R vagrant:vagrant /home/vagrant

Ardından şifreyi girmeden tekrar giriş yapabilmelisiniz.

TL; DR: Serseri ev klasörünüzdeki izinler yanlış.


0

Basit:

homestead destroy
homestead up

Düzenleme (İlk düşünüldüğü kadar basit değil):

Sorun, çiftlik evi kullanımının yeni versiyonları php7.0ve diğer bazı şeylerdi. Bu karışıklığı önlemek için verisongirişi ayarladığınızdan emin olun Homestead.yml:

version: "0"

0

Bu sorunu Windows 7 CMD'de verilen komutları çalıştırarak çözdüm, burada bu konu üzerindeki son yazılan bağlantı,

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

0

Son birkaç gündür yeniden paketlenmiş bir taban kutusu üzerinde kafamı dövüyorum. (Mac OS X, El Capitan)

@ Radek'in prosedürünü takiben kaynak kutuda 'vagrant ssh-config' yaptım ve şunu aldım:

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

Yeni kopyada, bu komut bana şunu verdi:

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

Bu yüzden, bu satırı yeni kopyaya ekledim:

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

Mükemmel değil ama hayatıma devam edebilirim.


0

Başka bir basit çözüm, Windows'ta, Homestead / Vagrantfile dosyasına gidin ve özel bir anahtar yerine bir kullanıcı adı / parola ile bağlanmak için bu satırları ekleyin:

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

Sonunda dosyanın bir kısmı şöyle görünecek:

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

Umarım bu yardımcı olur ..


0

Bunu VM makinemde denedim

izinleri / ev / serseri değiştirin (üzerinde bir chmod 700 yaptı)

şimdi doğrudan kutularıma ssh yapabilirim

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.