SSH 연결 속도를 제한하는 방법은 무엇입니까? 예를 들어 포트 전달( ssh -L ...
), 역방향 터널링( ssh -R ...
) 또는 SOCKS5 동적 포트 전달( ) 을 수행할 때 ssh -D ...
터널의 대역폭을 제한하고 싶을 수 있습니다.
답변1
ProxyCommand
이는 원래 TCP 연결 대신 이를 사용하여 수행할 수 있습니다. ProxyCommand
전역 구성 ssh
( ) 또는 명령줄에서 /etc/ssh/ssh_config
개인 구성을 지정할 수 있습니다 .~/.ssh/config
ssh -o ProxyCommand=…
간단 ProxyCommand
하거나 nc %h %p
이에 상응하는 것( 올바른 구문으로 SSH 서버에 대한 원시 TCP 연결을 제공하는 모든 것 ) nc
. 서버와 통신하려면 명령의 표준 입력에 쓰고 명령의 표준 출력에서 읽습니다. 밑창이 연결되지 않은 것과 거의 같습니다 ( 내부적으로 작동하는 경우 ).ncat
socat
ssh
nc %h %p
ProxyCommand
ssh
nc
비결은 양쪽과 사이에 nc %h %p
필터를 삽입 할 수 있다는 것입니다. ssh
이렇게 하면 연결을 제한할 수 있습니다. 당신의 ssh
연설이 다음과 같다고 상상해 보십시오 :
pv -qL 20K | nc %h %p | pv -qL 10K
서버로 전송되는 내용에는 ssh
첫 번째 제한이 적용되며 pv
, ssh
서버에서 수신되는 내용에는 두 번째 제한이 적용됩니다 pv
.
ssh
위 명령을 통해 대화를 실행하려면 다음을 호출하세요.
ssh -o ProxyCommand='pv -qL 20K | nc %h %p | pv -qL 10K' …
노트:
이 방법을 사용하면 전체 SSH 연결, 이를 통과하는 모든 것, 모든 터널, X11 전달, 기타 세션(연결 공유의 경우)을 제한할 수 있습니다.모든 것. 원시 TCP 연결을 제한합니다.
사용하는 경우 조용하지 않고 실제로 터널의 처리량을 보고
ssh -N
할 수 있습니다 .pv
ssh -o ProxyCommand='pv -cN out -L 20K | nc %h %p | pv -cN in -L 10K' -ND 8080 user@server
(콜 따로)를 사용하면
pv -R
달리기 설정을 변경할 수 있으므로pv
언제든지 스로틀을 조정할 수 있습니다. 이렇게 하려면 PID가 어디에 속하는지pv -P
내부에ProxyCommand
알려주는 것이 유용할 것입니다pv
.man 1 pv
자세히보다.구성에서 이미 s 를 사용하는 경우 s 를 사용하여 (대신 )
ProxyCommand
기존 값을 포함해야 합니다 . 구성에서 이미 이를 사용하고 있는 경우 이를 로 변환 한 다음 s와 함께 포함 해야 합니다 .nc %h %p
pv
ProxyJump
ProxyCommand
pv
답변2
한 가지 옵션은 라우터의 포트 22에 QoS를 적용하는 것입니다.
물방울예경량 사용자 공간 대역폭 셰이퍼. 또한 될 수 있습니다데몬으로 실행, 한 번에 여러 세션을 관리할 수 있는 역할입니다.
또 다른 가능성은 다음과 같은 것을 사용하는 것입니다.HTB 초기화 프로그램- 스크립트 또는IP_릴레이.
~에 따르면이 토론, iptables를 사용하여 패킷 흐름을 제한할 수도 있지만 이는 내 선택이 아닙니다. 차라리 대역폭을 직접 제한하고 싶습니다.