SSH ortak anahtarı sunucuya gönderilmiyor


33

Birkaç saat boyunca bununla mücadele ediyorum, bu yüzden herhangi bir yardım çok takdir ediliyor ...

Her ikisi de sshOSX’in ortak anahtarlarıyla yapabileceğim 2x sunucum var , sorun yok, bu yüzden her şeyin yolunda olduğundan eminim sshd_config.

rsyncİki sunucuyu eşitlemek için bir cron işi yapılandırmaya çalışıyorum ve B (yedek) sshsunucusunu bir genel anahtar kullanarak sunucu A'ya ihtiyaç duymaya çalışıyorum .

Hayatım boyunca neden açık anahtarımı bulamadığını çözemiyorum - bunlar ~/.ssh/içeride (yani. /root/.ssh) Ve tüm dosya izinleri A & B'de doğru.

Bu çıktı:

debug2: we did not send a packet, disable method
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/identity
debug3: no such identity: /root/.ssh/identity
debug1: Trying private key: /root/.ssh/id_rsa
debug3: no such identity: /root/.ssh/id_rsa
debug1: Trying private key: /root/.ssh/id_dsa
debug3: no such identity: /root/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password

Ayrıca, var olmayan özel anahtarları aradığını da unutmayın ...

drwx------. 2 root root 4096 May 25 10:15 .
dr-xr-x---. 4 root root 4096 May 24 18:52 ..
-rw-------. 1 root root  403 May 25 01:37 authorized_keys
-rw-------. 1 root root    0 May 25 01:41 config
-rw-------. 1 root root 1675 May 25 02:35 id_rsa_tm1
-rw-------. 1 root root  405 May 25 02:35 id_rsa_tm1.pub
-rw-------. 1 root root  395 May 25 02:36 known_hosts

2
Lütfen bize çıktısını verinls -la /root/.ssh/
mreithub

@mreithub Hızlı cevap için teşekkürler - yukarıda eklendi.
Danny

3
_tm1anahtar dosya adlarınızdan çıkarmayı deneyin (örn. mv id_rsa_tm1 id_rsave mv id_rsa_tm1.pub id_rsa.pub)
mreithub

@mreithub Bu çalıştı! Çok teşekkürler, ancak neden diğer dizeleri dosya adına ekleyemiyorum anlamıyorum. İMac cihazımda herhangi bir sorun olmadan sunuculara bağlanmak için bunu yapıyorum ... yani id_rsa.tm1.imac.pub dosyasını herhangi bir sorun olmadan kullanabilirim. Birden fazla anahtar istersem ne olur?
Danny

Yanıtlar:


22

Ssh man sayfasına bir göz atın:

   -i identity_file
          Selects a file from which the identity (private key) for public
          key authentication is read.  The default is ~/.ssh/identity for
          protocol   version   1,   and  ~/.ssh/id_dsa,  ~/.ssh/id_ecdsa,
          ~/.ssh/id_ed25519 and ~/.ssh/id_rsa  for  protocol  version  2.
          Identity files may also be specified on a per-host basis in the
          configuration file.  It is possible to have multiple -i options
          (and  multiple  identities  specified  in configuration files).

veya ssh_config man sayfası:

   IdentityFile
          Specifies a file from which the user's DSA, ECDSA,  ED25519  or
          RSA   authentication   identity   is   read.   The  default  is
          ~/.ssh/identity for  protocol  version  1,  and  ~/.ssh/id_dsa,
          ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 and ~/.ssh/id_rsa for proto‐
          col version 2.  Additionally, any identities represented by the
          authentication  agent  will  be  used for authentication unless
          IdentitiesOnly is set.

Görüyorsunuz, bir anahtar belirtmezseniz, denenen birkaç özel dosya adı vardır. Bunlar, log çıktınızda gördüğünüz dosyalardır.

Farklı adda bir dosyada bir anahtar kullanmak için üç seçeneğiniz vardır:

  • Yukarıdaki -iseçeneği kullanarak dosyayı açıkça belirtin .
  • Yukarıdaki IdentityFileseçeneği kullanarak istemcinizdeki dosyayı yapılandırabilirsiniz .
  • anahtarı kullanarak aracınıza ekleyin ssh-add.

Etkileşimli oturumlar için aracı en esnek olanıdır. Cron mesleğiniz için -iseçenek muhtemelen en kolay olanı.


26

Hedef ana bilgisayardaki hatalı biçimlendirilmiş bir yetkili_ anahtar dosyası, ssh'ın "bir paket göndermedik" iletisini çıkarıp pubkey auth kullanmak yerine bir parola istemesinin başka bir nedenidir: -

debug1: Next authentication method: publickey
debug1: Offering RSA public key: ~/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug2: we did not send a packet, disable method

Bu özel durumdaki sorun .ssh/authorized_keys, hedef konağa yapıştırılmış olan açık anahtar verilerinin ilk karakterinin eksik olmasıydı:

sh-rsa AAAA...

Çözüm basit "eksik" eklemek oldu.

ssh-rsa AAAA...

Ve bu yüzden:-

debug1: Next authentication method: publickey
debug1: Offering RSA public key: ~/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
...
debug1: Authentication succeeded (publickey).

2
teşekkür ederim, bu hatayı her aldığımda bunun nedeni uzak ana bilgisayardaki (sunucudaki) yetkili benim anahtarlarımın hatalı biçimlendirilmiş olmasıdır. Hatanın müşteriyle ilgili bir sorun varmış gibi görünmemesini diliyorum.
tamale

3
'İ'ye basmadan vim'e yapıştırma!
Jordan Davidson

Benim için hatalı biçimlendirilmiş gibi görünmüyordu ancak dosyayı sildim ve kaynak makineden yeniden oluşturmak için ssh-copy-id yaptım. Sorun çözüldü.
alvarez

14

Sorudaki bu tam hata mesajı dizisi , yerel taraftaki eşleşmeyen bir özel / ortak anahtar çifti durumunda da ortaya çıkabilir . Hayır, bu hiç mantıklı gelmiyor ama ben sadece neler olduğunu anlamaya çalışırken uzun zamandır saçlarımı yırttım.

  • Uzak sistem A .ssh/mykey.pubkopyalandı .ssh/authorized_keys.
  • Yerel sistem B, .ssh/mykeysistem A'nın genel anahtarıyla eşleşecek doğru özel anahtara sahip ancak aynı zamanda bir .ssh/mykey.pubeşleşmeyen, muhtemelen değiştirilmiş bir anahtarın önceki bir sürümü olan bir dosyaya sahip.

B'den A'ya SSH ( ssh -i mykey A), söz konusu iletilerde başarısız olur, özellikle -vvde ssh istemcisinden açarsanız şunu görürsünüz:

Özel anahtar deneniyor: .ssh / mykey
bir paket göndermedik, yöntemi devre dışı bırakın

Bu bir yalan çünkü gerçek anahtar denenmedi, görünüşe göre yerel ortak anahtar dosyasını, eşleşen bir olasılıkla işe yarayıp yaramadığını anlamak için kullandı ve daha sonra bir uyuşmazlık olduğunda hiçbir şey yapmadı. Her iki taraftaki hata ayıklama bilgilerinden hiçbiri sorunu gerçekten önemsemez.


Vaov! Bu benim için de biraz zaman öldürdü! Saçını kaybettim! Yani benim durumumda bu da oldu, sadece benim pub anahtarım gerçekten müşteri tarafında yetkili_keys dosyasındaydı, ancak en sonunda sshd sunucumun olmadığı bir isim @ host girişi içeriyordu. Her iki taraftaki onaylanmış anahtarlarla eşleşmeniz gerektiğinin farkında değildim, aslında, daha önce onları eşleştirdiğimi sanmıyorum. Bu sadece benim müşterim CentOS 7 iken Ubuntu 12.04 ile bağlantı kurarken bir problemdi. MacOS veya diğer Ubuntu sistemlerinden gitmek gayet iyi çalıştı.
gregthegeek 07.07

Peki bu sorunu nasıl çözersiniz? Sorunumu bir T olarak tanımladınız. Sorunum daha da ağırlaşıyor çünkü birkaç sistem arasında kurbağayı atıyorum. Aslında dosyayı belirlemek benim için çalışmıyor
Madivad

@Madivad Yerel / genel anahtarları yerel olarak eşleştirerek (veya genel anahtar yok) sorunu çözersiniz.
Caleb,

@Caleb Kulağa düştüğünden daha basit gibi geliyor (ve kuruşun düştüğünü düşünüyorum), bu, SSH istemcisi olarak kullanmak istediğim her sisteme hem genel hem de özel anahtarları kopyalamam gerektiği anlamına mı geliyor? Bir IdentityFile yaratmayı denedim, ama açıkçası yanlış kullanıyorum
Madivad

İstemcideki artık id_rsa.pub dosyasının kaldırılması bunu benim için çözdü. Ubuntu 12.04 sunucusuna bağlanan yeni bir Centos 7 istemcisinde bu problemle karşılaştım. yetkilinin_keys ismi @ host sorunu çözmedi. Dizinleri, izinleri, tam olarak aynı id_rsa anahtar dosyasını eşleştirdim, ancak fazladan bir id_rsa.pub (müşteri tarafında) vardı. Kaldırıldı, şimdi çalışıyor. Dizinler hızlı bir şekilde oluşturmak için ssh-keygen koştum, sonra iyi bilinen sistemden rsync. Ancak bu, herhangi bir özel anahtarla eşleşmeyen ekstra bir pub dosyası bıraktı (kaynak rsync'de değildi). Doğrulamak için eşleşmeyen pub dosyasını tekrar ekledim. Eşleştiğinizden veya kaldırdığınızdan emin olun.
gregthegeek

5

Ssh'nin aradığı varsayılan dosya isimleri id_rsave id_rsa.pub.

Başka dosya adları kullanmak istiyorsanız, bunları ssh_config( IdentityFileayarı kullanarak ) veya ssh komut satırı parametresi ile belirtmeniz gerekir -i.


4

RedHat'ta da aynı sorunu yaşadım; kayıtları kontrol etti ve ana dizinin yanlış kullanıcı hakları olduğunu tespit etti.

sshd[2507]: Authentication refused: bad ownership or modes for directory /home/user

Ev direktörü haklarının düzeltilmesi bunu çözdü.


4
U + L Yığın Değişim sitesine hoş geldiniz. Doğru izinlerin nasıl görünmesi gerektiğine dair bir örnek sunarak, cevabınızı başkalarına daha yararlı hale getirebilirsiniz.
Erathiel

~/.sshDir dışında çok benzer bir sorun yaşadım . En azından Fedora 28'de ~/.sshizinler 0775 iken, ortak / özel anahtarlarla bağlantı kuramadım. Bu yüzden izinleri 0755 olarak değiştirdim ve bir cazibe gibi çalıştım :)
PovilasB

3

Debian / Ubuntu'da hata ayıklamanın basit bir yolu şudur: Parola ile bağlan ve günlüğü kaydet

tail -f /var/log/auth.log

Başka bir terminalden bağlanmayı deneyin ve hatayı göreceksiniz ...

Benim durumumda / root dizini 770 idi ve 700 değildi, bu da varsayılan değerdi. Hata: "Kimlik doğrulama reddedildi: kötü sahiplik veya dizin / kök için modlar" idi.

Bunu düzelt ve bittin.


çok teşekkür ederim dostum! günümü kurtardın!
Anthony,

Bu netleşmesine yardımcı oldu. Mine 123.123.123.123 numaralı Kullanıcı suchandsuch adlı kullanıcıya AllowUsers'da listelenmediğinden izin verilmediğini söylüyordu . Çok teşekkür ederim!
aexl


0

Koşudan sonra

ssh-copy-id user@remote-host

normalde çalışması gerekir. Ancak başarısız olursa, şunu deneyin: İleride oturum açmak ve çalıştırmak istediğiniz kullanıcı olarak uzak ana bilgisayara giriş yapın:

ssh-keygen

Bana yardımcı oldu.


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

-2

müşteri:

vim /etc/ssh/ssh_config

#add your key 
IdentityFile ~/.ssh/yourkey

service sshd restart
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.