SSH sorunları: Soketten okuma başarısız: Bağlantı eş tarafından sıfırlandı


14

Sunucumuzdan birinde OpenSSH_6.6p1'i derledim. Yükseltilmiş sunucuya SSH üzerinden giriş yapabiliyorum. Ancak bundan OpenSSH_6.6p1 veya OpenSSH_5.8 çalıştıran diğer sunuculara bağlanamıyorum. Bağlanırken aşağıdaki gibi bir hata alıyorum.

Read from socket failed: Connection reset by peer

Günlüklerde hedef sunucuda, aşağıdaki gibi görüyorum.

sshd: fatal: Read from socket failed: Connection reset by peer [preauth]

Ben belirterek çalıştı cipher_spec bahsedildiği gibi [SSH -c AES128-ctr hedef-sunucu] burada ve bağlamak başardı. SSH'yi varsayılan olarak şifreyi kullanacak şekilde nasıl yapılandırabilirim? Burada neden şifre gerekli?


Bu hatayı aldığınız sunucudan yaptığınızda ne olur telnet ip.or.name.of.offending.server 22?
MadHatter

1
Her iki taraf da diğer tarafın bağlantıyı kapattığını düşünüyor. Bu noktada tcpdump veya wireshark'ı kıracağım ve her iki ucunda da çalıştıracağım.
Michael Hampton

@MadHatter Bağlantı noktası 22'ye telnet yapabilir ve SSH yanıtı alabilirim.
Mart'ta nitinler

Bu davranışın kod tabanındaki bir değişiklikten kaynaklanıp kaynaklanmadığını görmek için 6.5p1 gibi openssh'in önceki sürümlerini derlemeyi deneyin?

Yanıtlar:


7

Sorun bir sunucu tarafı hatası gibi geliyor. İstemci şifre listesini gönderdiğinde, openssh sunucusu muhtemelen listeyi tek bir sistem çağrısında okuyabilmeyi bekler.

Desteklenen şifreler listesi bir pakette iletilenden daha uzunsa, sunucu ilk çağrıda beklenenden daha az bayt alabilir. Sunucudaki doğru davranış, baytların geri kalanını almak için başka bir çağrı yapmak olacaktır. Ancak, görünen sorun açıklamasından, sunucu, şifrelerin tam listesini bir kerede almadığında bağlantıyı kapatır. İstemciden sonraki paket geldiğinde, sunucu istemciye bağlantı sıfırlaması gönderir.

İstemcinin daha kısa bir şifreleme listesi kullanacak şekilde yapılandırılması, hatayı giderir. OpenSsh istemcisi aşağıdaki yerlerde şifrelerin listesini arayacaktır:

  1. Komut satırında -c cipher_spec veya -o kullanarak Ciphers = cipher_spec
  2. ~ / .Ssh / config içinde ilgili ana makine bölümünde veya ilk ana makineden önce Ciphers cipher_spec belirtilerek.
  3. / Etc / ssh / ssh_config içinde ~ / .ssh / config ile aynı biçimi kullanarak
  4. Derleme zamanında istemcide yerleşik varsayılan bir liste.

İki yapılandırma dosyası sırasıyla kullanıcı başına ve sistem genelindeki ayarlardır. Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbcEric'in önerdiği gibi kullanmak iyi çalışmalıdır.


Bu, openssh'ın bu sürümünde bilinen bir kusur mu? kimse bu sorun için openssh hata izleyici bir bağlantısı var mı?
user313114

1
@ user313114 Böyle bir izleyici aramadım, çünkü hatanın üç yıl önce bu cevap yazıldığında zaten en yeni sürümlerde düzeltildiğine inanıyorum.
kasperd

4

Şifreyi ssh config dosyasında (/ etc / ssh / ssh_config veya benzeri, $ PREFIX vb. Komut satırında ssh istemcisine ilettiğiniz herhangi bir seçenek ssh (istemci) yapılandırma dosyasında ayarlanabilir.

İşte ilgili satır (sadece rahatsızlık):

#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc

3

Düzeltme yolum , umarım birine yardımcı olur:

# Recreate host keys
sudo rm /etc/ssh/ssh_host_*
sudo ssh-keygen -A

# Re-install SSh
sudo apt-get --reinstall install openssh-server openssh-client

Bir değer ekleyerek sshd_config dosyasını düzenleyin

add :  MaxAuthTries 3

Bir değeri kaldırarak ssh_config dosyasını düzenleyin

Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc

0

Aşağıdaki dosya izinlerini 600 olarak değiştirerek bu sorunu çözdüm.

/ etc / ssh / ssh_host_dsa_key
/ etc / ssh / ssh_host_rsa_key
/ etc / ssh / ssh_host_ecdsa_key

Ayrıca '/ etc / ssh /' içindeki diğer tüm dosyaların iznini 644 olarak değiştirdi. Tüm dosya dosyalarının sahibi 'root' olmalıdır.

'/ Etc / ssh' dizini altındaki tüm dosyalar için uygun izinleri atamak üzere komutların tamamı aşağıdadır:

chown root: kök / etc / ssh / * chmod 644 / etc / ssh / *
chmod 600 / etc / ssh / ssh_host_dsa_key
chmod 600 / etc / ssh / ssh_host_rsa_key
chmod 600 / etc / ssh / ssh_host_ecdsa_key


-1

Gördüğünüzle aynı belirtileri gösteren sorunum, kesilmiş ana bilgisayar anahtarlarından kaynaklanıyordu. Bunları aşağıdakilerle yeniden oluşturmayı deneyin:

sudo rm /etc/ssh/ssh_host_*
sudo ssh-keygen -A
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.