SSH-Verkehr begrenzen?

11

Ich möchte die SSH-Bandbreite auf meinem Server begrenzen können. Dh jeder sshd-Prozess sollte auf 200 KBit / s oder ähnliches begrenzt sein.

scp verfügt über diese Funktionalität, aber ssh, das eher für die reaktionsschnelle interaktive Verwendung konzipiert ist, scheint diese Option nicht zu haben. Ich möchte jedoch die -D-Funktionalität (SOCKS-Proxy) mit der Möglichkeit kombinieren, den Datenverkehr irgendwie einzuschränken.

Gibt es dafür überhaupt Optionen?

user10640
quelle
Möchten Sie dies auf dem SSH-Server tun, oder ist es in Ordnung, dies auf einer Firewall zwischen den beiden Computern zu tun?
Mark Henderson
Ich würde das wirklich lieber auf dem Server machen, da ich keinen Zugriff auf die Firewall habe.
user10640
Wenn Sie dies auf dem Client gerne tun, versuchen Sie es mit dem Befehlszeilenprogramm 'drizzle'.
Alex J
Obwohl der Befehl drizzle nützlich erscheint, kann ich den Benutzern letztendlich nicht vertrauen, dass er ausgeführt wird. Sieht so aus, als würde ich etwas Komplizierteres betrachten, als ich mir erhofft hatte: P. Danke an alle!
user10640

Antworten:

4

Ich bin mir nicht sicher, ob das Vertrauen in Benutzer Teil der Gleichung ist, aber es trickleist sehr praktisch, um die Geschwindigkeit eines bestimmten Befehls zu begrenzen. Wenn ich Pakete von zu Hause hochlade, bemerken die WoW-süchtigen Mitbewohner, wenn ich so etwas vergesse, da es die Pipe so ziemlich dominiert.

jldugger
quelle
1
Trickle kann als Daemon für mehrere Befehle auf demselben Computer ausgeführt werden und die Gesamtbandbreite verwalten. Praktisch, wenn Sie eine Reihe ansonsten unabhängiger Übertragungsvorgänge gleichzeitig starten möchten, diese jedoch insgesamt nur eine festgelegte Datenrate verwenden sollen.
David Spillett
1
Leider glaube ich nicht, dass mir das bei sshd helfen wird - es gibt neue sshds ab, wenn neue Verbindungen eingehen. Ich könnte mit einer Lösung auf Firewall-Ebene stecken bleiben, deren Implementierung etwas schwieriger sein wird.
user10640
wtf warum ist das die top antwort? tricklefunktioniert nicht mit einem Prozess, der sich gabelt. Das schließt sshd ein!
Navin
1

Es lohnt sich, die Implementierung von HTB Traffic Shaping mit tc zu untersuchen. Meine Lösung für ein ähnliches Problem bestand darin, das Skript htb.init zu verwenden, das unter http://sourceforge.net/projects/htbinit/ zu finden ist.

Ich habe es basierend auf der Begrenzung des Datenverkehrs von Port 22 eingerichtet, aber Sie können auch iptables verwenden, um die Pakete zu markieren / zu entstellen, die dann basierend auf der Markierung verarbeitet werden.

Steve
quelle
+1 für die bisher einzige tcverwandte Antwort.
Spooler
1
scp -l 8192 file.txt [email protected]:/tmp
//8192  = 8192 KB per second

Ich weiß, dass dieser Thread ziemlich alt ist, hoffe aber, dass dies jemandem hilft.

Hiroki
quelle
1
Es ist ärgerlich, dass zwei Personen Ihre Antwort abgelehnt haben, ohne zumindest einen Kommentar abzugeben. Ich nehme an, es liegt daran, dass scpes sich um einen ziemlich spezifischen Anwendungsfall von ssh handelt. Ich habe getestet scp -lund es funktioniert, obwohl zu beachten ist, dass es Kilobit (kb) pro Sekunde ist und nicht Kilobyte (kB).
mwfearnley
0

Es gibt einige Optionen.

In der Regel wird QoS an Port 22 auf einer Firewall / einem Router zwischen dem Server und den Clients implementiert.

Wenn sie auf dem gleichen lokalen Netzwerk (dh ohne Router oder Firewalls zwischen ihnen) sind, glaube ich , Sie IPTables zu begrenzen Bandbreite an Port 22 ... können Werfen Sie einen Blick hier , um weitere Informationen darüber , wie dies zu tun.

Mark Henderson
quelle
1
Sie müssen vorsichtig sein, wenn Sie den Ratenbegrenzer von iptables mit einem Dienst wie ssh verwenden, da "es wichtig ist zu beachten, dass sich die Ratenbegrenzung konzeptionell von der Bandbreitenbeschränkung / -begrenzung unterscheidet; eine bandbreitenbeschränkte Verbindung stellt Pakete in die Warteschlange und begrenzt die Rate, mit der sie." werden gesendet / empfangen. Die Ratenbegrenzung führt dies nicht aus. Wenn Sie die Ratenbegrenzung beispielsweise für eingehende TCP-Verbindungsversuche zu Ihrer Identität verwenden und Verbindungen, die das angegebene Limit überschreiten, abgelehnt werden, erfolgt keine Warteschlange für Pakete . "
Msanford
Hmmm guter Punkt
Mark Henderson
0

Sie könnten sich so etwas wie iprelay ansehen :

User-space bandwidth shaping TCP proxy daemon
iprelay can shape the TCP traffic forwarded through it to a specified
bandwidth and allow this bandwidth to be changed on-the-fly. Multiple
data streams to different sockets may be shaped to the same total
bandwidth, much like a traffic shaping router would. However, this
application runs in user space, and works by acting as a TCP proxy.
rkthkr
quelle