Ich habe ein Bash-Skript, das kleine Dateien nacheinander kopiert scp
. scp
Dieses Skript enthält also eine Reihe von Befehlen. Zur Authentifizierung gegenüber dem anderen Server wird ein SSH-Schlüssel verwendet.
Weil die Dateien so klein sind, erfolgen die SSH-Verbindungsversuche sehr schnell und schon nach kurzer Zeit im Skript, sodass scp
sie auf unbestimmte Zeit hängen bleiben.
- Es sind keine Fehler aufgetreten.
- Netzwerkgeräte wurden aus der Gleichung eliminiert und die Server kommunizieren live im selben Subnetz.
- Das Problem wurde
rsync
auch mit demonstriert.
Wenn sleep
zwischen diesen SCP-Aufrufen ein Abstand von 1 Sekunde eingehalten wird, läuft das Skript reibungslos und es kommt zu keinem Hängenbleiben.
Wo soll ich nach dieser offensichtlichen Ratenbegrenzung suchen? Ich sehe dies bei keinem meiner anderen Server ...
Antwort1
Manchmal richten die LeuteRatenbegrenzung mit iptables.
OpenSSH bietet die MaxStartups
Option, die Rate für eingehende Clients zu begrenzen. Die Standardeinstellung (zumindest auf meinem Computer) ist 10:30:100
.
man sshd_config
Alternativ kann ein zufälliger früher Verbindungsabbruch durch die Angabe der drei durch Doppelpunkte getrennten Werte start:rate:full (z. B. „10:30:60“) aktiviert werden. sshd(8) lehnt Verbindungsversuche mit einer Wahrscheinlichkeit von rate/100 (30 %) ab, wenn derzeit start (10) nicht authentifizierte Verbindungen bestehen. Die Wahrscheinlichkeit steigt linear an und alle Verbindungsversuche werden abgelehnt, wenn die Anzahl der nicht authentifizierten Verbindungen full (60) erreicht.
Ein weiteres, relativ häufiges Problem und eine Ursache für Verzögerungen bei OpenSSH-Verbindungen hängt mit einer Funktion des OpenSSH-Servers zusammen, die bei einem Verbindungsversuch versucht, eine umgekehrte Suche der eingehenden IP-Adresse durchzuführen. Ich glaube, diese DNS-Funktion ist aus Kompatibilitätsgründen mit einigen der älteren, rhost-kompatiblen Authentifizierungsmethoden erforderlich, eine Funktion, die meines Erachtens fast niemand mehr verwendet. Die DNS-Auflösungsfunktion verursacht jedoch Probleme, wenn die DNS-Resolver schlecht konfiguriert sind, für die Verwendung eines defekten Resolvers konfiguriert sind oder wenn möglicherweise etwas an der Reverse Zone, von der aus die Client-IP eine Verbindung herstellt, defekt ist.
Im Idealfall besteht die Lösung darin, DNS zu reparieren und sicherzustellen, dass Ihr DNS immer fehlerfrei funktioniert und schnell antwortet. Wenn Sie die DNS-Auflösung jedoch nicht benötigen, besteht eine schnelle Lösung darin, den Server daran zu hindern, Namen aufzulösen. Legen Sie UseDNS no
in Ihrem fest sshd_config
.