Ogranicz ruch SSH?

11

Chciałbym móc ograniczyć przepustowość SSH na moim serwerze. Tj. Każdy proces sshd powinien być ograniczony do 200 Kb / s lub coś w tym rodzaju.

scp ma tę funkcjonalność, ale wydaje się, że ssh, bardziej zaprojektowany do responsywnego interaktywnego użytku, nie ma tej opcji. Chciałbym jednak połączyć funkcję -D (proxy SOCKS) z pewną możliwością ograniczenia ruchu.

Czy są w ogóle jakieś opcje?

użytkownik10640
źródło
Czy chcesz to zrobić na serwerze SSH, czy może to zrobić na zaporze między dwoma komputerami?
Mark Henderson
Wolałbym to zrobić na serwerze, ponieważ nie mam dostępu do zapory.
user10640
Jeśli robisz to na kliencie, wypróbuj narzędzie „mżawka” w wierszu poleceń.
Alex J
Chociaż komenda mżawka wydaje się przydatna, ostatecznie nie mogę ufać użytkownikom, że ją uruchomi. Wygląda na to, że utknąłem patrząc na coś bardziej skomplikowanego, niż się spodziewałem: P. Dzięki wszystkim!
user10640,

Odpowiedzi:

4

Nie jestem pewien, czy ufanie użytkownikom jest częścią równania, ale tricklejest bardzo przydatne do ograniczenia prędkości danego polecenia. Kiedy przesyłam paczki z domu, współlokatorzy uzależnieni od WoW zauważają, że o czymś takim zapominam, ponieważ w dużej mierze dominuje to w fajce.

jldugger
źródło
1
Trickle może działać jako demon i zarządzać całkowitą przepustowością dla wielu poleceń na tym samym komputerze. Przydaje się, gdy chcesz rozpocząć kilka niezależnych operacji przesyłania w tym samym czasie, ale chcesz, aby wykorzystywały w sumie nie więcej niż ustaloną szybkość przesyłania danych.
David Spillett
1
Niestety, nie sądzę, aby to pomogło mi w sshd - odsuwa nowe sshds, gdy nadchodzą nowe połączenia. Mogę utknąć w jakimś rozwiązaniu na poziomie zapory ogniowej, które będzie nieco trudniejsze do wdrożenia.
user10640
wtf dlaczego to jest najlepsza odpowiedź? tricklenie działa z żadnym rozwidlającym się procesem. Obejmuje to sshd!
Navin
1

Warto byłoby zaimplementować kształtowanie ruchu HTB za pomocą tc. Moim rozwiązaniem prostego problemu było użycie skryptu htb.init znalezionego na stronie http://sourceforge.net/projects/htbinit/

Skonfigurowałem go w oparciu o ograniczenie ruchu z portu 22, ale możesz także użyć iptables do oznaczania / zmieniania pakietów, które są następnie przetwarzane na podstawie znaku.

Steve
źródło
+1 za jedyną tcjak dotąd powiązaną odpowiedź.
Spooler
1
scp -l 8192 file.txt [email protected]:/tmp
//8192  = 8192 KB per second

Wiem, że ten wątek jest dość stary, ale mam nadzieję, że to komuś pomoże.

Hiroki
źródło
1
To denerwujące, że dwie osoby zanotowały twoją odpowiedź bez komentarza. Przypuszczam, że to dlatego, że scpjest to raczej specyficzny przypadek użycia ssh. Testowałem scp -li działa, chociaż zauważ, że to kilobity (kb) na sekundę, a nie kilobajty (kB).
mwfearnley
0

Istnieje kilka opcji.

Powszechnym jest wdrażanie QoS na porcie 22 na zaporze ogniowej / routerze między serwerem a klientami.

Jeśli są w tej samej sieci lokalnej (tzn. Nie ma między nimi routerów ani zapór ogniowych), uważam, że możesz użyć IPTables do ograniczenia przepustowości do portu 22 ... Zajrzyj tutaj, aby uzyskać więcej informacji na temat tego, jak to zrobić.

Mark Henderson
źródło
1
Należy zachować ostrożność podczas korzystania z ogranicznika prędkości iptables z usługą taką jak ssh, ponieważ „Ważne jest, aby pamiętać, że ograniczenie prędkości różni się koncepcyjnie od ograniczania / ograniczania przepustowości; połączenie z ograniczoną przepustowością ustawia kolejki pakietów i ogranicza szybkość, z jaką są przesyłane / odbierane. Ograniczenie szybkości nie spowoduje tego; gdy użyjesz ograniczenia prędkości, na przykład, próby połączenia przychodzącego połączenia TCP na twój identyfikator, a połączenia przekraczające określony limit zostaną odrzucone; nie ma kolejkowania pakietów . ”
msanford
Hmmm goood point
Mark Henderson
0

Możesz spojrzeć na coś takiego jak iprelay :

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
źródło