ssh bağlantısı başlatmak için sonsuza kadar sürer, “rehin: ağ”


44

Sunucularımdan birine ssh kullanan bağlantıların başlatılması 20 saniyeden uzun sürüyor.

Bu LAN veya WAN koşullarıyla ilişkili değildir, çünkü kendi kendine bağlantı aynıdır (ssh localhost). Bağlantı nihayet kurulduktan sonra, sunucuyla etkileşime geçmek süper hızlıdır.

-Vvv kullanılması, "rehin: ağ" derken bağlantının yapıştığını gösterir. Bu noktada, burada görüldüğü gibi kimlik doğrulama (burada anahtarı kullanarak) yapılmıştır:

...
debug1: Authentication succeeded (publickey).
Authenticated to myserver.mydomain.com ([xx.xx.xx.xx]:22).
debug1: channel 0: new [client-session]
debug2: channel 0: send open
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: network

(... 15 ila 25 saniye burada kaldı ...)

debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
debug2: callback start
debug2: fd 3 setting TCP_NODELAY
debug2: client_session2_setup: id 0
...

Sunucu Ubuntu 16.04. Geçmişte zaten başıma başka bir sunucuyla başıma geldi (Ubuntu 12.04 idi), sinir çözümünü buldu ve sorun bir süre sonra hayal kırıklığına uğradı ...

sshd_config, Ubuntu tarafından sağlanan varsayılan değerdir.

Şimdiye kadar denedim:

  • -o kullanarak GSSAPIAuthentication = ssh komutunda hayır
  • anahtar yerine şifre kullanılması
  • UsePrivilegeSeparation no yerine yes (sshd_config) kullanarak

1
Genellikle benim için yavaş SSH bağlantıları DNS problemleridir, bu böyle olabilir mi? Örneğin, sunucu müşterinin IP adresi için ters bir DNS yapmayı denemekte ve bunun zaman
aşımını

Aslında hayır: varsayılan olarak UseDNS sshd_config dosyasında tanımlanmamış ve man sayfası bu seçeneğin varsayılan olarak "hayır" olduğunu söylüyor.
M-Jack,

3
Bazı Google çalışanları bunun, sistemi yeniden başlatmadan güncelleyerek kaynaklanabileceğini öne sürüyor. Ve 12 Temmuz'da xenial için sistem güncellemesi yapıldı . systemctl restart systemd-logindsorunu sadece benim için kısa bir süre için düzeltti.
Ivan Kozik

Ya da pam_systemd(sshd:session): Failed to create session: Connection timed outbir cevapta bahsedildiği gibi görüyorsanız , bu, github.com/systemd/systemd/issues/2925
Ivan Kozik

Bu güncellemeden sonra bu sorunu yaşamaya geldim ve @ IvanKozik'in önerisi sorunu çözdü - yani systemctl restart systemd-logind - bu yüzden bunun için teşekkür ederim.
Paul M

Yanıtlar:


43

Bu muhtemelen bir konudur D-Busve systemd. Eğer dbushizmet nedense yeniden, ayrıca yeniden başlatma gerekir systemd-logind.

Sorunun ssh daemon logunu açarak (Ubuntu'da olması gerektiği gibi /var/log/auth.log) olup olmadığını kontrol edebilir ve şu satırları olup olmadığını kontrol edebilirsiniz:

sshd[2721]: pam_systemd(sshd:session): Failed to create session: Connection timed out

Eğer evet ise, systemd-logindservisi yeniden başlatmanız yeterlidir:

systemctl restart systemd-logind

Aynı sorunu CentOS 7'de de yaşadım, çünkü messagebusyeniden başlatıldı ( D-Bushizmet CentOS'ta böyle adlandırılıyor).


Systemd-logind komutunu yeniden başlatmaya çalıştım ancak bir süre sonra PolicyKit arka planının veri yolunun bağlantısını kestiği yazıyor. Artık kayıtlı bir kimlik doğrulama aracısı değiliz. Bir zaman aşımı aşıldığından systemd-logind.service için iş başarısız oldu. Detaylar için bakınız "systemctl status systemd-logind.service" ve "journalctl -xe".
Kun Ren,

@KunRen muhtemelen polkithizmeti kullanarak yeniden başlatmanız gerekir systemctl restart polkit.
Strahinja Kustudic

16

cevabı buldum:

sshd_config dosyasında UsePAM'i evet'den hayır'a değiştirdi

Ssh servisini yeniden başlattıktan sonra bağlantı şimdi sunucuya anında gönderilir. Bu sunucuda PAM, ldap ile bağlantılıdır, bu yüzden muhtemelen nedeni, burada bir LDAP sunucusundan değil, sunucunun kendisinde ilan edilen bir kullanıcıyla bağlantı kursam bile.

Peki, bu sorunu atlamak için daha bir yoldur, gerçekten bir çözüm değil ... Bu sunucuya sahip aynı şekilde ayarlanmış başka sunucular var.

Umarım bu birine yardımcı olabilir ...


1
UsePAM'i değiştirmenin başka etkileri yoktur. Bkz bu tartışmayı ben Kullanıcı Nagios gibi hataları var çünkü hesap kilitli olduğundan izin verilmez, Ben kullanıcıya bir şifre koymak zorunda kaldı
M-Jack

4
Bu gerçekten iyi bir fikir değil.
Jakuje

1
neden ?? herhangi bir alternatif?
M-Jack,

8
PAM, modern sistemlerde hesap yönetimi etrafındaki diğer şeyler için kullanılır. Kapatmak yerine, PAM yığınında neler olup bittiğini ve neden bu kadar uzun sürdüğünü araştırmakla iyi olursunuz.
Jakuje

Yaygın olarak kullanılmayan PAM modülünün SSH erişimi için etkin bırakılması bir güvenlik açığıdır. Güvenlik açısından SSH gibi kritik hizmetlere erişimi sınırlamak, HERHANGİ bir servis için de her zaman iyi bir fikirdir. PAM modülünün SSH ile işbirliği yapmasını istediğinizde? Örneğin: onu winbind üzerinden aktif dizine entegre etmeniz gerektiğinde, google jetonları ile iki faktörlü kimlik doğrulaması gerektiğinde vb. Diğer durumlarda (passwd ve shadow kullanırken) kapatmak tamamen güvenlidir. Her PAM kullanıcısı bunu görecektir
Michal Sokolowski

10

Bu, iki Fedora 25 sunucumda oldu ve birçok SSH giriş denemesi başarısız oldu.

(Kullanmanın GSSAPIAuthentication=nove UseDNS=noyeniden başlatmanın genel önerileri bir systemd-logindfark yaratmadı .)

Bu sunucularda, /etc/pam.d/postloginşunları içerir:

session     optional      pam_lastlog.so silent noupdate showfailed

İçin man sayfası pam_lastlog, showfailedseçeneğin şöyle olacağını açıklar :

Başarısız oturum açma denemelerinin sayısını ve btmp'daki son başarısız denemenin tarihini görüntüleyin.

Bu sunucularda, /var/log/btmpbirçok başarısız oturum açma girişimi nedeniyle dosyalar muazzamdı. btmpGünlük dosyaları ya döndürülmüş olması değildi.

logrotateGünlük dosyalarının ileride döndürülmesini sağlamak için paketi kurdum . (Fedora'da, birlikte verilen yapılandırma logrotate, dönüşünü gerçekleştirir /var/log/btmp.)

Ayrıca büyük btmpgünlük dosyalarını sildim ; Bunu yapar yapmaz, sunuculara bağlanmak tekrar anında oldu.


Bu benim sorunumu çözdü! Teşekkür ederim. Güzel yakalayış. SSH 5-10 saniye sürüyordu ve şimdi göz açıp kapayana kadar daha az. Bu, yıllardır halka açık İnternet'e bağladığım bir sanal makinede. Güvenlik duvarı kuralları, şimdi düşünüyorum da muhtemelen biraz daha iyi ayarlanmış olabilir. Diğerleri için tek yaptığım sudo truncate -s 0 /var/log/btmpbuydu : - Mine 2.7G büyüklüğündeydi.
Carl Bennett

2

Benim durumumdaki sebep çöktü rsyslogd oldu. Bunu öğrendim çünkü örn. / Var / log / syslog veya /var/log/mail.log’da daha fazla log mesajı yoktu.

Böylece service rsyslog restartbizim için sorunu çözdü.


CentOS 6.10 çalıştıran bir sunucuda da aynı sebep. Rsyslog yeniden başlattı bununla ilgilendi. Sorun ölü değildi. Koşuyordu, ama görünüşe göre yararlı bir şey yapmıyordu.
UtahJarhead

1

Benim için bu sorun büyük (yüzlerce MB) btmpdosyasından kaynaklanıyor. Bu dosya giriş girişimlerini günlüğe kaydeder. İnsanlar kaba kuvvete zorlamaya çalışırken bu dosya büyük olabilir ve bu "pledge: network"aşamada gecikmelere neden olabilir .

Günlük dosyasını temizlemeye çalışın

echo "" > /var/log/btmp

ve yardımcı olup olmadığını görmek.


3
Bunun çok daha fazla açıklaması gerekiyor. Yeni başlayanlar için, bunun neden faydalı olduğunu düşünüyorsun?
Sven

ipucu: Sadece yazarak :> /var/log/btmpaynı btw yapar.
Marius,

1

Benim için çözüm ekliyordu

UseDNS no

için /etc/ssh/sshd_configve sonra tabii ki service ssh restart(bizim Debian / Jessie sunucuda). Başka hiçbir şey...

önce :

ssh git@git.*****.de true  0.03s user 0.01s system 0% cpu 13.440 total
ssh git@git.*****.de true  0.03s user 0.01s system 0% cpu 20.990 total
ssh git@git.*****.de true  0.03s user 0.02s system 0% cpu 31.114 total
ssh git@git.*****.de true  0.03s user 0.01s system 0% cpu 25.898 total

sonra :

ssh git@git.*****.de true  0.03s user 0.02s system 5% cpu 0.832 total
ssh git@git.*****.de true  0.03s user 0.01s system 7% cpu 0.523 total
ssh git@git.*****.de true  0.03s user 0.01s system 7% cpu 0.574 total

Hayır, ekleme UseDNS notamamen farklı bir sorun için bir çözümdür.
kasperd

@ kasperd Önemli değil. Benim durumumda da aynı belirtiler vardı (kısaca: "rehin: ağ" derken sıkışıp kaldım) ve bu nihayet yardımcı oldu, yani bu en azından çok benzer bir problemin çözümü. başka bir noktada.
tamasgal

Aynı, iki bağlantı sırasında askıda kalıyor, birbiri ardına sign_and_send_pubkey, daha uzun bir sonra pledge: network. Sadece ekleme UseDNS nomüteakip ile service ssh restartburada eski bir Ubuntu 14.04.5 LTS yüklemesinde sorunu çözmek etmedi.
Hound

0

Hata ayıklama geribildirimimde şu satırı fark ettim:

Control socket connect(/var/lib/jenkins/.ssh/USER@HOST:22): Permission denied

root:rootBen ise sahip olduğum bir dosyaydı jenkins. Bu dosyayı kaldırmak sorunlarımı çözdü.

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.