Ich sehe Verzögerungen bei den SSH-Anmeldungen. Insbesondere gibt es 2 Stellen, an denen ich einen Bereich von augenblicklichen Verzögerungen bis zu Verzögerungen von mehreren Sekunden sehe.
- Zwischen der Ausgabe des Befehls ssh und dem Erhalt einer Anmeldeaufforderung und
- zwischen der Eingabe der Passphrase und dem Laden der Shell
Im Einzelnen schaue ich mich hier nur die SSH-Details an. Offensichtlich können die Netzwerklatenz, die Geschwindigkeit der beteiligten Hardware und Betriebssysteme, komplexe Anmeldeskripts usw. Verzögerungen verursachen. Als Kontext verwende ich eine Vielzahl von Linux-Distributionen und einige Solaris-Hosts, die hauptsächlich Ubuntu, CentOS und MacOS X als Client-Systeme verwenden. Fast immer bleibt die Konfiguration des SSH-Servers gegenüber den Standardeinstellungen des Betriebssystems unverändert.
Welche SSH-Serverkonfigurationen sollten mich interessieren? Gibt es OS / Kernel-Parameter, die angepasst werden können? Login-Shell-Tricks? Usw?
Antworten:
Versuchen Sie ,
UseDNS
umno
in/etc/sshd_config
oder/etc/ssh/sshd_config
.quelle
ssh -vvv
)./etc/ssh/sshd_config
! Ich fügte hinzu/etc/sshd_config
und sah überhaupt keinen Unterschied !!Wenn ich
ssh -vvv
auf einem Server mit einer ähnlich langsamen Leistung lief, sah ich hier einen Hang:Durch Bearbeiten
/etc/ssh/ssh_config
und Auskommentieren dieser Authentifizierungsmethode wurde die Anmeldeleistung wieder normalisiert. Folgendes habe ich auf meinem/etc/ssh/ssh_config
Server:Sie können dies global auf dem Server festlegen, sodass keine GSSAPI-Authentifizierung akzeptiert wird. Fügen Sie einfach
GSSAPIAuthentication no
zu/etc/ssh/sshd_config
auf dem Server und starten Sie den Dienst.quelle
GSSAPIAuthentication no
als auchUseDNS no
in/etc/ssh/sshd_config
Datei festgelegt werden.Für mich war die IPv6-Auflösung der Täter, es war eine Zeitüberschreitung. (Vermutlich schlechte DNS-Einstellungen bei meinem Host-Provider.) Ich habe dies festgestellt, indem ich festgestellt habe
ssh -v
, welcher Schritt hängengeblieben ist.Die Lösung ist
ssh
mit der-4
Option:ssh -4 [email protected]
quelle
debug2: resolving "thing.net.au" port 22
ohne Fehler pausiert. Dies geschieht jedoch nicht mit -4, was darauf hinweist, dass es sich um ein DNS IPv6-Problem handelt.Bei systemd hängt sich die Anmeldung nach einigen Upgrades möglicherweise bei der dbus-Kommunikation mit logind auf. Anschließend müssen Sie logind neu starten
Sah das auf Debian 8, Arch Linux und auf einer Suse-Liste
quelle
Sie können immer
ssh
mit der-v
Option beginnen, die anzeigt, was gerade getan wird.Mit den von Ihnen angegebenen Informationen kann ich nur einige clientseitige Konfigurationen vorschlagen:
Da Sie schreiben, dass Sie Kennwörter manuell eingeben, empfehle ich, wenn möglich die Authentifizierung mit öffentlichem Schlüssel zu verwenden. Dies beseitigt Sie als Geschwindigkeitsengpass.
Sie können auch die X-Weiterleitung mit
-x
und die Authentifizierungsweiterleitung mit deaktivieren-a
(diese sind möglicherweise bereits standardmäßig deaktiviert). Insbesondere das Deaktivieren der X-Weiterleitung kann zu einer deutlichen Geschwindigkeitsverbesserung führen, wenn Ihr Client einen X-Server für denssh
Befehl starten muss (z. B. unter OS X).Alles andere hängt wirklich davon ab, welche Verzögerungen Sie wo und wann erleben.
quelle
In Bezug auf den 2. Punkt finden Sie hier eine Antwort, bei der weder Änderungen am Server noch Root- / Administratorrechte erforderlich sind.
Sie müssen Ihre "user ssh_config" -Datei wie folgt bearbeiten:
(Hinweis: Sie müssten das Verzeichnis $ HOME / .ssh erstellen, wenn es nicht existiert.)
Und füge hinzu:
Sie können dies bei Bedarf auf Hostbasis tun :) Beispiel:
Stellen Sie sicher, dass die IP-Adresse mit Ihrer Server-IP übereinstimmt. Ein cooler Vorteil ist, dass ssh jetzt die automatische Vervollständigung für diesen Server bereitstellt. Sie können also
ssh lin
+Tab
eingeben und es sollte automatisch vervollständigt werdenssh linux-srv
.quelle
Überprüfen Sie
/etc/resolv.conf
auf dem Server, ob der in dieser Datei aufgeführte DNS-Server ordnungsgemäß funktioniert, und löschen Sie alle nicht funktionierenden DNS.Manchmal ist es sehr hilfreich.
quelle
Abgesehen von den bereits erwähnten DNS-Problemen kann es bei der Installation auf einem Server mit vielen NFS-Bereitstellungen zu einer Verzögerung zwischen Kennwort und Eingabeaufforderung kommen, da der
quota
Befehl auf allen Dateisystemen, die nicht mit dem gemountet sind, Ihre Nutzung / Quote überprüftnoquota
. Auf Solaris-Systemen können Sie dies im Standard sehen/etc/profile
und durch Ausführen überspringentouch $HOME/.hushlogin
.quelle
Funktioniert gut.
UseDNS no funktioniert nicht mit OpenIndiana !!!
Lesen Sie "man sshd_config" für alle Optionen
"LookupClientHostnames no", wenn Ihr Server nicht auflösen kann
quelle
Wenn keine der oben genannten Antworten funktioniert und Probleme mit der DNS-Rückwärtssuche auftreten, können Sie auch überprüfen, ob
nscd
(Name Service Cache Daemon) installiert ist und ausgeführt wird.Wenn dies das Problem ist, liegt es daran, dass Sie keinen DNS-Cache haben und jedes Mal, wenn Sie nach einem Hostnamen fragen, der sich nicht in Ihrer Hostdatei befindet, senden Sie die Frage an Ihren Nameserver, anstatt in Ihrem Cache nachzuschauen
Ich habe alle oben genannten Optionen ausprobiert und die einzige Änderung, die funktioniert hat, war "Start"
nscd
.Sie sollten auch die Reihenfolge überprüfen, in der die DNS-Abfrage aufgelöst werden soll
/etc/nsswitch.conf
, damit zuerst die Hosts-Datei verwendet wird.quelle
Dies ist wahrscheinlich nur für Debian / Ubuntu OpenSSH spezifisch, das das von einem der Debian-Paketbetreuer geschriebene user-group-modes.patch enthält. Dieser Patch ermöglicht es den ~ / .ssh-Dateien, das beschreibbare Gruppenbit (g + w) zu setzen, wenn es nur einen Benutzer mit derselben GID wie die der Datei gibt. Die Funktion secure_permissions () des Patches führt diese Überprüfung durch. Eine der Phasen der Prüfung besteht darin, jeden passwd-Eintrag mit getpwent () zu durchlaufen und die gid des Eintrags mit der gid der Datei zu vergleichen.
Auf einem System mit vielen Einträgen und / oder langsamer NIS / LDAP-Authentifizierung ist diese Prüfung langsam. nscd speichert keine getpwent () -Aufrufe im Cache, sodass jeder passwd-Eintrag über das Netzwerk gelesen wird, wenn der Server nicht lokal ist. Auf dem System, das ich fand, fügte es ungefähr 4 Sekunden für jeden Aufruf von ssh oder Login in das System hinzu.
Das Update besteht darin, das beschreibbare Bit für alle Dateien in ~ / .ssh zu entfernen
chmod g-w ~/.ssh/*
.quelle
Ich stellte fest, dass der Neustart von systemd-logind.service das Problem nur für ein paar Stunden behoben hat. Das Ändern von UsePAM von yes in no in sshd_config hat zu schnellen Anmeldungen geführt, obwohl motd nicht mehr angezeigt wird. Kommentare zu Sicherheitsfragen?
quelle
Um alle Antworten zu vervollständigen, aus denen hervorgeht, dass DNS-Auflösungen Ihre SSH-Anmeldung verlangsamen können, fehlt manchmal eine Firewall-Regel. Zum Beispiel, wenn Sie standardmäßig alle INPUT-Paquets TROPFEN
Dann müssen Sie INPUT für SSH-Port und DNS-Anfrage akzeptieren
quelle
ssh -vvv
Die Verbindung funktionierte einwandfrei, bis das System mindestens 20 Sekunden lang versuchte, das Terminal zu erreichen:Nachdem ich
systemctl restart systemd-logind
auf dem Server eine Verbindung hergestellt hatte, hatte ich sofort wieder eine Verbindung!Das war auf debian8 ! Also war systemd das Problem hier!
Hinweis: Bastien Durel hat bereits eine Antwort auf dieses Problem gegeben, es fehlen jedoch die Debug-Informationen. Ich hoffe das ist hilfreich für jemanden.
quelle
session [default=1] pam_lastlog.so nowtmp showfailed
in/etc/pam.d/postlogin
. Anscheinend war das Aktualisieren der Lastlog-Datei auf meinem container-basierten OpenVZ VPS unglaublich langsam.Ich habe kürzlich eine andere Ursache für langsame SSH-Anmeldungen gefunden.
Selbst wenn Sie haben
UseDNS no
in/etc/sshd_config
sshd kann noch Reverse - DNS - Lookups durchführen , wenn Sie/etc/hosts.deny
einen Eintrag hat , wie:Dies kann passieren, wenn auf Ihrem System DenyHosts installiert ist.
Es wäre großartig, wenn jemand wüsste, wie man DenyHosts dazu bringt, solche Einträge zu vermeiden
/etc/hosts.deny
.Hier ist ein Link zu den DenyHosts-FAQ zum Entfernen von Einträgen aus
/etc/hosts.deny
- siehe Wie kann ich eine von DenyHosts blockierte IP-Adresse entfernen?quelle
Möglicherweise stellen wir fest, dass die bevorzugte Methode zur Namensauflösung nicht die Hostdatei und dann DNS ist.
Dies wäre zum Beispiel die übliche Konfiguration:
Zuerst wird die Hosts-Datei erreicht (Option: Dateien) und dann DNS (Option: DNS). Wir können jedoch feststellen, dass ein anderes Namensauflösungssystem hinzugefügt wurde, das nicht funktionsfähig ist und uns die Langsamkeit beim Versuch verursacht, die umgekehrte Auflösung durchzuführen.
Wenn die Reihenfolge der Namensauflösung nicht korrekt ist, können Sie sie unter folgender Adresse ändern:
/etc/nsswitch.conf
Auszug aus: http://www.sysadmit.com/2017/07/linux-ssh-login-lento.html
quelle
Ich habe alle Antworten ausprobiert, aber keine hat funktioniert. endlich finde ich mein problem heraus:
zuerst laufe ich
sudo tail -f /var/log/auth.log
also ich kann das log von ssh dann in einer anderen sitzung laufen sehenssh 172.16.111.166
und bemerkte das warten daraufNach der Suche fand ich diese Zeile in / etc / ssd / ssh_config
Ich habe es kommentiert und die Verspätung ist vorbei
quelle
Hinweis: Dies begann als "How to Debug" -Tutorial, war jedoch die Lösung, die mir auf einem Ubuntu 16.04 LTS-Server geholfen hat .
TLDR : Führen
landscape-sysinfo
Sie den Befehl aus, und überprüfen Sie, ob das Beenden dieses Befehls lange dauert. Dies ist der Ausdruck der Systeminformationen bei einem neuen SSH-Login. Beachten Sie, dass dieser Befehl nicht auf allen Systemen verfügbar ist. Daslandscape-common
Paket installiert ihn. ("Aber warte, es gibt noch mehr ...")Starten Sie einen zweiten SSH-Server an einem anderen Port auf dem Computer, an dem das Problem auftritt. Führen Sie dazu den Debug-Modus aus, der nicht zum Verzweigen führt, und drucken Sie die Debug-Meldungen aus:
Stellen Sie von einem anderen Computer im ausführlichen Modus eine Verbindung zu diesem Server her:
Mein Client gibt die folgenden Zeilen unmittelbar vor dem Einschlafen aus:
Googeln ist nicht wirklich hilfreich, aber die Serverprotokolle sind besser:
Ich habe bemerkt , dass , wenn ich ändern ,
UsePAM yes
umUsePAM no
dann dieses Problem behoben ist.Keine Beziehung zu
UseDNS
oder eine andere EinstellungUsePAM
betrifft nur dieses Problem auf meinem System.Ich habe keine Ahnung , warum, und ich bin auch nicht verlassen
UsePAM
aufno
, weil ich nicht weiß , was die Nebenwirkungen sind, aber dies läßt mich weiter zu untersuchen.Betrachten Sie dies also nicht als Antwort, sondern als ersten Schritt, um herauszufinden, was nicht stimmt.
Also recherchierte ich weiter und rannte
sshd
mitstrace
(sudo strace /usr/sbin/sshd -ddd -p 44321
). Dies ergab folgendes:Die Leitung
/etc/update-motd.d
machte mich misstrauisch, anscheinend wartet der Prozess auf das Ergebnis des Materials, das in ist/etc/update-motd.d
Also ich
cd
‚d in/etc/update-motd.d
und lief ein ,sudo chmod -x *
um PAM zu hemmen , um alle Dateien zu laufen , die diese Dynamik zu erzeugenMessage Of The Day
, die Systemlast enthält und wenn Pakete aktualisiert werden müssen, und das Problem dadurch gelöst.Dies ist ein Server, der auf einer "energieeffizienten" N3150-CPU basiert, die rund um die Uhr viel zu tun hat. Ich denke, dass das Sammeln all dieser Motd-Daten einfach zu viel war.
Ich kann damit beginnen, Skripte in diesem Ordner selektiv zu aktivieren, um festzustellen, welche weniger schädlich sind, aber speziell das Aufrufen
landscape-sysinfo
ist sehr langsam und50-landscape-sysinfo
ruft diesen Befehl auf. Ich denke, das ist derjenige, der die größte Verzögerung verursacht.Nach Neuaktivieren die meisten Dateien kam ich zu dem Schluss , dass
50-landscape-sysinfo
und99-esm
die Ursache für meine Sorgen waren.50-landscape-sysinfo
Die Ausführung dauerte ca. 5 Sekunden und99-esm
ca. 3 Sekunden. Alle restlichen Dateien ca. 2 Sekunden zusammen.Weder noch
50-landscape-sysinfo
und99-esm
sind entscheidend.50-landscape-sysinfo
druckt interessante Systemstatistiken aus (und auch, wenn Sie wenig Platz haben!) und99-esm
druckt Nachrichten aus, die sich auf Folgendes beziehenUbuntu Extended Security Maintenance
Schließlich können Sie mit ein Skript erstellen
echo '/usr/bin/landscape-sysinfo' > info.sh && chmod +x info.sh
und diesen Ausdruck auf Anfrage erhalten.quelle
Dieser Thread bietet bereits eine Reihe von Lösungen, aber meiner ist hier nicht angegeben =). Hier ist es also. Mein Problem (es dauerte ungefähr 1 Minute, bis ich mich mit ssh in mein Himbeer-Pi eingeloggt hatte) lag an einer beschädigten .bash_history-Datei. Da die Datei beim Anmelden gelesen wird, hat dies die Anmeldeverzögerung verursacht. Sobald ich die Datei entfernt hatte, war die Anmeldezeit wieder wie gewohnt.
Hoffe, das wird einigen anderen Menschen helfen.
quelle
Für mich brauchte ich GSSAPI und ich wollte Reverse-DNS-Lookups nicht deaktivieren. Das schien einfach keine gute Idee zu sein, also habe ich die Hauptseite für resolv.conf überprüft. Es stellte sich heraus, dass eine Firewall zwischen mir und den Servern, zu denen ich SSHing ausgeführt habe, DNS-Anforderungen störte, da diese nicht die von der Firewall erwartete Form hatten. Am Ende musste ich nur diese Zeile zu resolv.conf auf den Servern hinzufügen, zu denen ich SSHing ausgeführt habe:
options single-request-reopen
Für den Fall, dass Sie nicht mehr weiterkommen möchtenquelle
Bemerkenswerterweise wurde ein Paketupdate von bind unter CentOS 7 mit dem Namen "Name" veröffentlicht, das im Protokoll angibt, dass in /etc/named.conf ein Berechtigungsproblem aufgetreten ist. Mit 0640 hat es seit Monaten gut funktioniert. Jetzt will es 0644. Dies ist sinnvoll, da der named-Daemon dem named-Benutzer gehört.
Mit "named down" war alles langsam, von SSH-Anmeldungen über das Serving von Seiten vom lokalen Webserver bis hin zu trägen LAMP-Apps usw., höchstwahrscheinlich, weil bei jeder Anforderung auf dem toten lokalen Server eine Zeitüberschreitung auftrat, bevor auf einen externen, konfigurierten sekundären DNS zugegriffen wurde.
quelle
Für mich gab es ein Problem in meiner lokalen
/etc/hosts
Datei. Also habessh
ich versucht, zwei verschiedene IP-Adressen (eine davon ist falsch) zu verwenden.Hier hat das Verwenden
ssh -v
den Trick gemacht:quelle
/etc/hosts
vom Server?