SSH Public Key'imi yetkili_keylere kopyaladıktan sonra sunucu şifre sormaya devam ediyor


44

Bulutta çalışan bir Ubuntu Sunucum var. Bir kullanıcı yarattım ( git). Klasöründe /home/git, ben yarattık .ssh/dir ve authorized_keysdosyayı.

Ancak, SSH Genel Anahtarımı authorized_keysdosyaya koyduğumda , sunucu bana şifreyi sormaya devam ediyor.

Neyi yanlış yaptım?


Nereye halkı sokuyorsun? Git kullanıcında mı yoksa kökünde mi? nasıl aldın? ssh <you> @ <server> o <git> @ <server> veya root @ <server> .. olarak kontrol edin ve daha fazla bilgi ekleyin.
maniat1k

Yanıtlar:


42

Sunucu tarafında, ssh arka plan programı oturum /var/log/auth.logaçarak hataları bildirir ; bu nedenle, ne rapor edildiğini görmek için bu dosyayı kontrol edin.

Müşteri tarafında, bağlantıyı kurarken, ayrıntı düzeyini artırmak için -vbayrak (veya -vvveya -vvv) ekleyebilirsiniz . Sorununuzu bu şekilde tanımlayabilirsiniz.

İşte kontrol etmeniz gereken diğer şeyler.

  • Emin olun /home/git/.ssh/authorized_keysaittir git.
  • /home/git/.ssh/authorized_keys600 ( -rw-------) moduna sahip olduğunuzdan emin olun .

Ayrıca /etc/ssh/sshd_configdosyayı kontrol edin .

  • PubkeyAuthentication ayarlanmalı yes
  • AuthorizedKeysFileYetkili anahtarların yerleştirilmesi gereken yolu belirleyen bir direktif de vardır . Yorumlandığından veya varsayılanından emin olun %h/.ssh/authorized_keys.

Teşekkürler! Bu seçenekleri deneyeceğim ve daha sonra geri bildirim için geri döneceğim!
Luis Dalmolin

Bir /var/log/auth.logdosya görmüyorsanız ne yaparsınız ? Bunu açmanın bir yolu var mı?
Steve Robbins

1
Bir /var/log/auth.log yoksa günlükler / var / log / secure olabilir
CoverosGene

Saçma bir hata, bağlanmak istediğim sunucudaki .pub dosyasını hemen .ssh klasörünün içine kopyaladım. Yetkili_keyler klasörüne taşıdığınızdan emin olun.
CenterOrbit

Ayrıca grup yazma izinlerini de ev dizinimden çıkarmak zorunda kaldım. Sonra ssh ile yeniden başlattımsudo service ssh restart
Dylan Pierce

19

Ayrıca kullanıcı giriş dizininizin (sizin durumunuzda, / home / git) sadece tarafınızdan yazılabilir olduğundan emin olun. Bu sorunu bir kez yaşadım, çünkü ev dizinim grup halinde yazılabilirdi. /var/log/auth.log, içerisinde şöyle dedi: "Kimlik doğrulama reddedildi: dizin / home / chuck için sahiplik veya kipler". (bu, kendinizden başka birinin uğraştığı bir yetkili_keys dosyasını kullanmadığından emin olmak içindir!)


Bu kesinlikle faydalı olsa da, bunun daha çok xeyes'in cevabına bir katkı olduğunu düşünüyorum .
gertvdijk

1
Aman Tanrım, çok teşekkürler! Gözlerim yanıyordu çünkü google'da yaptığım tüm aramalar. Sonunda işe yaradı! Çok teşekkür ederim.
GTRONICK

Adam teşekkürler! saatlerce bir çözüm aramak için harcadım ... ve bu tüm sorunlarımı çözdü.
Afaria

Evet. öyleydi. aşağı sonraki cevap okumaya karar verdim sevindim
Katushai

Ayrıca, / etc / passwd dosyasını , kullanıcının ana dizininin ne olduğunu kontrol edin . Benim tuhaf sorunum standart bir şey değildi
Ocak'ta 17:17

5

Bunu çözmenin farklı yolları vardır: Parola doğrulaması kullanmayacak şekilde sshd(sunucu tarafı) veya ssh(istemci tarafı) yapılandırabilirsiniz . Sunucuda parola doğrulamayı devre dışı bırakmak sunucunuzu daha güvenli hale getirir, ancak anahtarınızı kaybederseniz başınız belaya girer.

sshPubkey kimlik doğrulamasını kullanarak (müşteri tarafı) yapmak için, sshkomuta bazı seçenekler ekleyin :

ssh -o PubkeyAuthentication=yes -o PasswordAuthentication=no -X git@server

Bu işe yararsa, PasswordAuthentication=noseçeneği /etc/ssh/ssh_configsistem genelinde veya ~/.ssh/configkullanıcıya özel ssh client config dosyasında kalıcı olarak ayarlayabilirsiniz (ayrıntılar için bkz. man ssh_config).


1
Varsayılan /etc/ssh/ssh_configolarak Debian / Ubuntu sistemlerindeki tüm SSH istemci konfigürasyonu ( ) zaten tercih etmekte PubkeyAuthentication ve sshayrıntılı modda çalıştırırken ilk göreceğiniz şeyi denemektedir .
gertvdijk

3

Yerel makinenizde ~ / .ssh / config kullanıyor musunuz? Config dosyasında IdentityFile yönergesini kullandığımda ve ortak anahtara geldiğimde bu sorunu yaşıyorum. Örneğin:

Host Cloud
    Hostname cloud.theclouds.com
    User git
    IdentityFile ~/.ssh/config/mykey # This is correct

    # IdentityFile ~/.ssh/config/mykey.pub # This is incorrect


1

Kontrol edilmesi gereken bir başka şey de, genel anahtarınızda fazladan taşıma iadesi olup olmadığıdır. /Var/log/auth.log dosyasını incelemek için yukarıdaki tavsiyelere uydum ve anahtarı okurken bir hata gördüm. Anahtar dört yerine yaklaşık iki satırdı. Anahtarın içine gömülü ekstra taşıma iadeleri vardı.

Vi editörünü kullanırken, satırlara katılmak ve anahtar dizesindeki fazladan boşluğu silmek için shift-j tuşunu kullanın.


1
Ben kontrol izinleri üçlü ve sshd_config. Yarım saat boyunca başımı duvara çarptım. Bu benim hatamdı! Her nasılsa, düzenlediğim tüm dosyaları ekstra bir satır sonu ile bitirme alışkanlığı kazandım. Sonunda bir anahtar ve bir araba dönüşü olsa bile, yetkilendirmeyi karıştırmak yeterlidir.
jrhorn424

Siz de ----- END RSA ÖZEL ANAHTARIN ----- bit olduğundan emin olun.
tobych

1

Birden fazla özel anahtarınız varsa, diğer birincil anahtarlarınızın bağlanmaya çalışıp çalışmadığını görmek için ssh connection komutunuzdaki -v anahtarını kullanın. Değilse, ssh istemcisine bunları aşağıdaki komutla kullanmasını söyleyin:

ssh-add path/to/private/key

1

Anahtarınızı SSH Ajansına da ekleyebilirsiniz:

u@pc:~$ ssh-agent bash
u@pc:~$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/u/.ssh/id_rsa: # ENTER YOUR PASSWORD
Identity added: /home/u/.ssh/id_rsa (/home/u/.ssh/id_rsa)

0

Ayrıca aradığınız da olabilir

sudo git clone gituser@domain:repo.git

kök kullanıcıların ssh anahtarının eklenmediği authorized_keysyergituser


0

Ubuntu 18.04.02 LTS çalıştıran bir makinede, izinlerin ~/.ssh600 olarak ayarlanması önerisi benim için işe yaramadı. İzinleri 700 olarak ayarlamak zorunda kaldım ve sonra işler iyi gitti.


0

.Ssh / dizini ve dosya dosya izinlerimi doğru yaptım ancak farklı, kendine bağlı bir sorun nedeniyle bu "parola istemi" sorunuyla karşılaştım.

Bilgiyi yerel id_rsa.pub adresimden sunucudaki yetkili_dosyalar dosyasına kopyalamak için fare tabanlı bir vurgu ve kopyala / yapıştır kullandım. Bu, verileri tek bir satırda başarıyla kopyaladı, ancak vi ile bir dosyayı düzenlerken görünmesi zor olan görünen satırların sonunda istenmeyen boşluklar var. Bu istenmeyen alanları bir kere kaldırdığımda iyi bir şekilde ssh yapabildim.


0

Bu yüzden benim için olan şey, yerel makinemden erişmek için 2 VM'm olduğu (2 anahtar id_rsa.pub ve id_rsa2.pub). Ssh bağlantımın varsayılan olarak herhangi bir ssh user@xx.xx.xx.xx bağlantısı için id_rsa.pub kullandığını fark ettim. Bir config dosyası ekleyerek sorunumu çözdüm ve her ana bilgisayar için kullanılacak kimliği aşağıdaki gibi belirledim:

vi ~/.ssh/config

Add both hostnames and their identity file as follows:

Host server1.nixcraft.com
  IdentityFile ~/Users/.ssh/id_rsa1
Host server2.nixcraft.com
  IdentityFile /backup/home/aymen/.ssh/id_rsa2
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.