Моя компания требует, чтобы у меня было запущено одно серверное приложение, и все пользователи обращались к нему через терминал замазки. Я хочу написать сценарий оболочки, что только 20 замазка терминала должны быть открыты. Если 21-й терминал открыт, то я хочу немедленно закрыть этот терминал.
Как мне этого добиться?
Пожалуйста, помогите мне.
command-line
bash
scripts
vijay12289
источник
источник
MaxSessions
поле/etc/sshd_config
, или это ошибка Ubuntu?Ответы:
Отредактируйте
/etc/sshd_config
на стороне сервера и измените строку:в
Смотрите
man sshd_config
:источник
MaxSessions 20
. Упоминаемые здесь сеансы касаются таких вещей, как переадресация портов (и даже наличие нескольких открытых оболочек), использующих одно и то же соединение, а не количество входов в систему.Решение Джорджа работает отлично, но вы попросили сценарий bash ...
Так считают этот для других ситуаций , когда нет никакой возможности , как
MaxSessions
изsshd
, то вы можете использовать что - то вроде этого:Который
pkill -n
убьет новейший экземплярprocessName
.Правильное решение этой особой ситуации - ответ Джорджа.
источник
Я решил разработать и протестировать Ravexina «s идеи . Это работает, и это эффективно, если вы хотите ограничить количество установленных соединений SSH вообще.
Сначала я обнаружил, что когда демон ssh работает без какого-либо соединения, существует один
sshd
процесс. Для каждого нового соединенияsshd
создаются два новых процесса. Поэтому, если вы хотите ограничить 20 соединений, порог должен быть 41 (1 + 2x20) вместо 20.Затем я создал исполняемый файл с именем , который выглядит следующим образом:
/usr/local/bin/limit-sshd
Наконец, я добавил следующую директиву
/etc/ssh/sshd_config
:$SHELL
выполнит оболочку пользователя по умолчанию.sudo systemctl restart sshd.service
Вот как это работает ( нажмите на изображение, чтобы увидеть анимацию ):
Далее я понял, что нам не нужно ничего убивать, если мы изменим скрипт таким образом:
И соответственно
/etc/ssh/sshd_config
таким образом:источник
Вопрос не ясен. Позвольте мне сначала рассказать, как я понимаю это и каким образом, ИМО, следует спросить:
Если эта интерпретация верна, вероятно, правильный способ выполнить требования - создать группу пользователей , затем добавить все учетные записи пользователей в эту группу и ограничить число maxlogins через них
/etc/security/limits.conf
.Создайте группу, например
the-app-maxlogins
, с идентификатором группы10 000
:Добавьте пользователей в эту группу -
sudo adduser <user> <group>
:Добавьте следующую строку ,
/etc/security/limits.conf
чтобы ограничить в maxlogins из всей группы :Или добавьте следующую строку, чтобы ограничить максимальное число входов в систему на пользователя группы :
Отредактируйте
/etc/ssh/sshd_config
и добавьте следующие строки в конец (!) Файла, чтобы отключить мультиплексирование сеансов для этой группы (возможно, это не обязательно в этом случае):Это решение ограничит количество входов затронутых пользователей независимо от того, будут ли они использоваться через ssh или tty. Если вы хотите применить его для определенного пользователя, а не для группы, просто добавьте следующую строку
limits.conf
или поместите ее в отдельный.conf
файл в каталоге/etc/security/limits.d/
:В этом ответе
MaxSessions
дается простое объяснение действительного значения директивы . Основным источником текущего ответа является другой ответ на тот же вопрос L & U.Другой ответ мой, может обеспечить обходной путь в некотором роде, но это своего рода удовольствие , а не истинное решение.
источник