Anahtar dosyaları ile ssh kimlik doğrulaması yapmaya çalışıyoruz: sunucu anahtarımızı reddetti


53

Kullanıcı adı / şifre yerine anahtar dosyalarla ssh kimlik doğrulaması ayarlamaya çalışıyorum. İstemci PuTTY çalıştıran bir Windows kutusudur ve sunucu bir Ubuntu 12.04 LTS sunucusudur.

Ben puttygen.exe indirilen ve bir anahtar çifti oluşturmak vardı. In /etc/ssh/sshd_configI Bu çizgi var:

AuthorizedKeysFile %h/.ssh/authorized_keys

ve müşterimin genel anahtar dosyasında şöyle yazıyor:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "my@email.address.com"
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAr3Qo6T5XU06ZigGOd3eKvfBhFLhg5kWv8lz6
qJ2G9XCbexlPQGanPhh+vcPkhor6+7OmB+WSdHeNO652kTofnauTKcTCbHjsT7cJ
GNrO8WVURRh4fabknUHPmauerWQZ6TgRPGaz0aucU+2C+DUo2SKVFDir1vb+4u83
AV1pKxs=my@email.address.com
---- END SSH2 PUBLIC KEY ----

Parçayı "ssh-rsa AAA" 'dan "my@email.address.com"' a kopyaladım ve onu sunucumdaki dosyaya koydum ~/.ssh/authorized_keys(kendi ana sayfamda). Connection> SSH> Auth altındaki PuTTY'de, istemcimde oluşturduğu özel anahtarın yolunu girdim ve oturum ayarlarını kaydettim.

Ssh sunucusunu yeniden başlattım

sudo service ssh restart

Şimdi profili PuTTY'ye yüklersem (özel anahtarın hala Connection> SSH> Auth ve yolun doğru olduğunu doğruladım) ve profili çalıştırın.

Server refused our key

Genel anahtarı dizinin altındaki bir dosyaya koymayı denedim ./ssh/authorized_keys/ama bu işe yaramadı, bu yüzden dosya./ssh/authorized_keys olarak kullandım , anahtarı yapıştırarak. Ayrıca sunucuda bir özel / açık anahtar çifti oluşturmayı, açık anahtarı koymayı ve özel tanesini PuTTY'ye istemcime yüklemeyi denedim . Sunucuyu yeniden başlatmak da yardımcı olmadı../ssh/authorized_files

Anahtarın kullanıcının giriş klasörü dışındaki bir yere yerleştirilmesiyle hatanın çözülebileceğini öğrendim, ancak bu yalnızca giriş klasörü şifrelenmişse, ki bu değil.

Ayrıca 4096 bitlik bir anahtar oluşturmaya çalıştı, belki 1024'ün çok kısa olduğunu düşünerek.

Bunun işe yaramasını nasıl sağlayabilirim? Teşekkürler!

DÜZENLE:

Tamam, /var/log/auth.logdedi ki:

sshd: Authentication refused: bad ownership or modes for directory /home/vorkbaard/.ssh

Google bana ~/.ssh/700 ve ~/.ssh/authorized_keys600 olması gerektiğini söyledi, ben de yaptım. Şimdi /var/log/auth.logdiyor ki:

sshd: error: key_read: uudecode AAAAB3N [etc etc etc until about 3/4 of my public key]

Yanıtlar:


95

Tamam, düzeltildi ancak bunun daha önce denediğimden nasıl farklı olduğunu göremiyorum.

Ben ne yaptım:

  • puttygen.exe ile bir anahtar çifti oluşturun (uzunluk: 1024 bit)
  • özel anahtarı PuTTY profiline yükle
  • genel anahtarı ~/.ssh/authorized_keys bir satırda girin (başlaması gerekir ssh-rsa)
  • chmod 700 ~/.ssh
  • chmod 600 ~/.ssh/authorized_keys
  • chown $USER:$USER ~/.ssh -R
  • /etc/ssh/sshd_configiçerdiğinden değiştirAuthorizedKeysFile %h/.ssh/authorized_keys
  • sudo service ssh restart

Sorun giderme için yapın # tail -f /var/log/auth.log.

Yardımınız için teşekkürler!


1
Hmm, peki bu sshd: error: key_read: uudecode AAAAB3Nhataya ne oldu auth.log?
Alaa Ali,

Bir ipucum yok, Alaa. Belki de önceki anahtar dizgiyi yapıştırırken bir hata yaptım. Auth.log artık daha fazla giriş alamıyor ve anahtar tabanlı kimlik doğrulama kusursuz çalışıyor. Benim asıl sorun ben gerçekten emin değildi olmasıydı Ne hale yapılması gereken ne olduğunu çok daha zor. Bu yüzden neden bilmiyorum ama işe yarıyor. Yardımınız için tekrar teşekkürler :)
Forkbeard

Müthiş !!! Kafamı 2 gündür kaşıyordum. Bu cevaplar günü kurtarıyor !!
naka,

3. adım benim için püf noktasıydı. Açık anahtarını authorized_keysaz önce dosyamı klasöre yapıştırdığım mykey.pubdosyaya koymayıp açacağımı ~/.sshdüşündüm. Bunun yerine nihayetinde ihtiyacım olan şey bunu çalıştırmak ya da orada olabilecek diğer anahtarların altına düzenlemek ve yapıştırmaktı. cat mykey.pub >> authorized_keys. Şimdi basit görünüyor, ancak öğrenilen ders, tüm genel anahtarların authorized_keyssadece ~/.ssh/dizinde değil , yaşamak zorunda oldukları . Birisi lütfen bunun doğru bir iddia olmadığını söyler.
timbrown

Adımlar yardımcı olmazsa, ayrıca şunları kontrol edin: 1. kaydedilmiş PuTTY ortak anahtarını OpenSSH anahtarına değil, yetkili_ anahtarlarına kopyaladınız 2. PuTTYgen'den kopyala / yapıştır kullanarak kopyaladıysanız (yapmanız gereken) çoklu hatlarda ortak anahtar; tek bir satır olmalı; kopyalarken r_hartman centos.org/forums/viewtopic.php?t=990
mvladk

23

Ben sadece bu sorunla karşılaştım. Config, bu başlıkta daha önce belirtildiği gibi doğru bir şekilde ayarlanmış olmasına rağmen (yetkili anahtarlar üzerindeki izinler vs.), açık anahtarın yanlış formatta olduğu ortaya çıktı. Şeklinde idi:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "imported-openssh-key"
AAAAB3NzaC1yc2EAAAADAQABAAABAQDUoj0N3vuLpeviGvZTasGQ...
... lPmTrOfVTxI9wjax2JvKcyE0fiNMzXO7qiHJsQM9G9ZB4Lkf71kT
---- END SSH2 PUBLIC KEY ----

Bu işe yaramadı. Ama formda olmasıyla çalışmasını sağladı:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDU.....j0N3vuLpeviGvZTasGQa1rcJiPXQMW7v3uurb+n94B9MQaaWR0odsg5DJQL92TNenOda5BO1nd08y6+sdLQmHXExTz6X8FzgoVsAkEl3RscxcxHUksiKA9JfTo38vQvG/bPxIHMCuSumCQVA1laf3rO/uOrkcB7iMWhaoi1/z6AbFtPzeh7xjGfInMWwtBI0CsHSRF73VWIxT26w0P+KjafCjSn/7vDO1bT8QHujSQelU/GqaVEvbbvPl1a7POVjKgHLNekolwRKfNeVEewcnmZaoqfHgOKlPmTrOfVTxI9wjax2JvKcyE0fiNMzXO7qiHJsQM9G9ZB4Lkf71kT UserName@HOSTNAME

14
ssh-keygen -i -f filenameofwindowsformpub.keyGenel anahtarı OpenSSH sunucunuz tarafından anlaşılan formata dönüştürmek için kullanabilirsiniz .
Kara

Evet, benim için çalıştı! Tek bir satırda olmak zorunda. Sadece bu olduğuna inanamıyorum!
adelriosantiago 20:16

1
HI kuraara Yukarıdaki talimatın @ Black tarafından cevapta öne çıkması gerektiğini düşünüyorum.
ekerner

OpenSSH sunucu formatına yorum ekleyebilir miyim? İnsan için bu anahtarın hangi bilgisayarı temsil ettiğini söylemek zor.
user1700890

@Black tarafından yapılan öneriyi izlediğimde, dizenin sonunda UserName @ HOSTNAME yok. Bu kısmın önemli olup olmadığını bilmiyorum.
arnoldbird

9

Buradaki sorun, pencerelerin linux'dan farklı bir yeni satır kullanmasıdır , bu yüzden anahtarı pencerelerden linux'a kopyalarken , satırın sonunda editörde linux'da göremediğiniz bir \ n vardır .

Eğer /var/log/auth.log dosyasını yazarsanız ve giriş yapmayı denerseniz, hata şu şekilde olur:

sshd: hata: key_read: uudecode AAAAB3N [....] == \ n

Anahtarınızı pencerelerden değiştirirseniz , sonunda yeni bir satır olmadan tek bir satırda ve ardından Linux'a kopyalarsanız, çalışması gerekir (benim için hile yaptım).


bu benim sorunumdu, fakat bunun böyle olduğunu önermek için auth.log'da hiçbir şey görmedim. sinir bozucu ...
Anthony

8

Giriş dizinine izinleri değiştirmek zorunda kaldım

chmod 700 ~

2
Bu benim için de işe yaradı (AIX'te olsa da).
stevepastelan

Benim için de
CentOS'ta

Redhat'ta benim için çalıştı! Grup yazma erişimi belirli bir konu gibi görünüyor. Yine de grup okuma izinlerini yerinde bırakırsam hala işe yarar: "chmod 740 ~".
Paul

6

~ / .Ssh dizin izinlerini 770'den 700'e ve ~ / .ssh / yetkili_keys dosya izinlerini 660'dan 600'e değiştirmek zorunda kaldım.

Bazı nedenlerden dolayı grup izinlerini kaldırmak bu sorunu benim için düzeltti.

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

5

~/.ssh/authorized_keysDosya tek bir satırda olmak için anahtarları gerektirir. Yukarıdaki yapıştırmanızda olduğu gibi birden çok satıra eklediyseniz, satırları birleştirmeyi deneyin.


Teşekkürler, bu mantıklı ve şimdi bunun neden bir dosya olduğunu anladım, bir dizin değil. Ancak yardımcı olmadı.
Forkbeard

3
Kafası karışabilecek biri için, her bir anahtarın tek bir satırda olması gerektiği, ancak farklı anahtarların farklı satırlarda olması gerektiği anlamına gelir.
Anthony,

2

İşte benim için çalıştı ne:

Gelen puttygenanahtarlarını oluşturduktan sonra, kopyalamak emin olun ve authorized_keys dosyasına gitmek için üst alandan bilgilere yapıştırın. Genel anahtarınızı istemci makinenize kaydedip sonra açarsanız, metin puttygenekranın üstündeki metinden farklıdır . Yine, metni puttygenekranın üst kısmından (anahtarlarınızı oluşturduktan sonra) kopyalayıp, yerleştirmeniz gereken yetkili_ anahtarlar dosyanıza yapıştırdığınızdan emin olun ~/.ssh.


bu aslında sorunu çözdü. Genel anahtarı kaydet'i tıklatırsanız neden doğru biçimi kaydetmediğini anlamıyorum.
luky,

1

Yukarıdaki tüm cevaplara ek olarak, anahtarı puttygendoğru kopyalayıp yapıştırdığınızdan emin olun!

Sadece seçmek için anahtar dize toplu üzerine çift tıklarsanız metin kutusu gibi bazı karakterler çizgiler böler, çünkü, tüm dizeyi alamayabilirsiniz +Peşinde metin seçmezseniz şekilde, +(karakteri metin kutusu çok küçük olduğu için göremezsiniz). ssh-rsaMetin kutusunun en sonuna kadar dizenin tamamını el ile seçtiğinizden emin olun .


1

Bazen açık anahtarın bir satırda bulunmasıyla ilgili bir sorun olabilir, bu yaklaşım onu ​​çözüyor gibi görünüyor

echo 'the content of the public key' > /root/.ssh/authorized_keys

1

Benim için sorun ~/.ssh/authorized_keyskök tarafından sahip olunan kök kullanılarak yaratılmış olmamdı. Zorunda kaldım chown sshuser:sshuser ~/.ssh/authorized_keyso çalışmaya başladı


1

Ben de bu hata ile karşılaştım ve yetkili_keys dosyasının izinlerini değiştirerek çözdüm 600.

chmod 600 ~/.ssh/authorized_keys

1

Yaygın hata, insanların metin düzenleyiciyi (Vim gibi) kullanması ve "insert" i etkinleştirmeden önce kopyalanan metni yapıştırmasıdır (yapıştırmadan önce Vim'deki + i tuşlarına basın)


0

Aslında, authorized_keysiznini değiştirdim 644, sonra problem çözüldü.

chmod 644 ~/.ssh/authorized_keys

0

açık ssh hata ayıklamak için kullanabilirsiniz:

sudo `which sshd` -p 2020 -Dd

diğer 2020 nolu bağlantı noktasında sshd'yi çalıştırır. Geçerli bir program olarak sshd'yi çalıştırır, böylece çıktı ekrana gider. eğer kapalıysa kapalı.

sonra bağlanmayı deneyin.

açıklama:

  • `Hangi sshd` - sshd adresini bulur, hangi sshd'nin ne yazdırdığını görmeyi deneyin. geri tırnak kullanıldığında sonucu çalıştırır ve yerine döndürür.
  • -p 2020 - bağlantı noktasını belirtir
  • -D - dosyaya giriş yap
  • -d - ekrana giriş yap

https://www.attachmate.com/documentation/rsit-unix-802/rsit-unix-guide/data/sshd_options_ap.htm


Bu cevabı genişletebilir misiniz? Argümanlar ne anlama geliyor? Komut ne yapıyor (deneyimli olmayan biri için)?
Zzzach ...

-1

Kök olarak giriş yaparken .ssh ve yetkili_keys dosyalarını yaratıyordum, bu da yanlış izinler veriyordu. Ayrıca tüm dosyaları kök dizinin altına yerleştirdi.

İstediğiniz kullanıcıya bu dosyaların sahipliğini değiştirmek iyi bir uygulama olmayacak, bu yüzden adımımı geri çektim ve SSH ile tekrar kullanmak istediğim ve tekrar .ssh ve yetkili_ anahtarlar oluşturduğum kullanıcı olarak oturum açtığımdan emin oldum.

Win7'yi Xubuntu 15.04 sunucusuna bağlamanın yol tarifi: VPS'ye Bağlanmak için Macunlu SSH Anahtarları Nasıl Oluşturulur

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.