세션을 멀티플렉싱하도록 SSH 클라이언트를 구성했습니다.
Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 600
때때로 기본 OpenSSH 서버 측 MaxSessions
제한인 10에 도달합니다. 분명한 대답은 MaxSessions
필요한 것보다 훨씬 더 많은 수로 늘리는 것입니다.
1000000으로 설정하지 않을 이유가 있나요? 기본값 10은 이를 수행하지 않는 이유가 있음을 나타냅니다.
내가 생각할 수 있는 것은 10개 정도를 넘으면 연결이 붐비면 효율성이 떨어질 수 있다는 것뿐이지만, 피해가 나 자신에게만 국한된다는 점을 고려하면 그것이 이유인지 잘 모르겠습니다.
답변1
무엇이든 제한하는 데는 항상 이유가 있습니다. 이것이 10
"정상적인 기본값"입니다. 더 적은 것은 더 제한적인 사용 사례(셸 액세스 차단 또는 단일 채널만 허용)를 위한 것이며, 수백만 개의 세션을 발행할 것이라는 것을 정말로 알고 있다면 더 많이 늘리는 것도 합리적입니다. 4개 이상 여는 경우는 거의 없습니다.
이 질문에 관하여:
1000000으로 설정하지 않을 이유가 있나요?
max_sessions
바꾸다유형이 있으므로 int
가능한 최대 값은 입니다 2147483647
. 당신이 이상적인 수백만 달러를 모으는 것을 막을 수 있는 것은 아무것도 없습니다.
...하지만 이미 언급했듯이 이렇게 할 이유가 없습니다.
더 많은 세션을 사용한다고 해서 보안에 큰 영향을 미치지는 않지만(공격자가 단일 세션을 열면 문제가 발생합니다), 더 많은 세션을 사용하면 성능이 저하될 수 있습니다.
답변2
1000000으로 설정하지 않을 이유가 있나요?
예. 실수로 SSH 세션을 계속 사용하는 스크립트를 실행하면 DoS
자신의 서버가 위험에 처하게 됩니다. 동일한 서버의 다른 응용 프로그램이 더 이상 파일을 열 수 없는 상황이 발생하고 싶습니까? 열린 파일 설명자 수는 제한되어 있으며 /proc/sys/fs/file-max
일반적으로 기본값은 1M 미만입니다.
임의로 큰 값이 아니라 필요하다고 생각되는 최대값과 안전 버퍼를 추가하여 설정해야 합니다.
답변3
각 SSH 세션은 리소스를 사용합니다. 일부 빠른 벤치마크에서는 일반적인 세션이 하나의 프로세스 ID, 500kb의 비공유 메모리 및 7개의 파일 설명자를 사용한다는 것을 보여줍니다. 이 모든 리소스는 제한된 리소스이므로 모두 사용하면 서버가 응답하지 않거나 사용할 수 없게 됩니다.
기억하세요, 당신은 당신의 서버에 연결된 유일한 사람이 아닙니다. 충분히 안전하지 않은 SSH 서버를 검색하는 봇넷이 많으며 리소스를 고갈시킬 수도 있습니다.