Нет такой опции, которая может ограничивать максимальное количество соединений ssh.
Но как обходной путь, мы можем сделать sshd управляемым супер демоном xinetd и использовать опцию экземпляров xinetd, чтобы ограничить максимальное количество соединений ssh.
В большинстве Unix-подобных операционных систем сервер OpenSSH работает как демон, прослушивающий соединения SSH.
В системах CentOS / RHEL, однако, sshd управляется демоном супер-сервера xinetd.
Всякий раз, когда клиент SSH пытается связаться с sshd через TCP-порт 22, xinetd замечает попытку и вызывает один экземпляр sshd (в частности, sshd -i) для обслуживания этого соединения.
Ограничение максимального числа соединений ssh
1. Создайте файл /etc/xinetd.d/sshd и добавьте следующее содержимое.
# cat /etc/xinetd.d/sshd service ssh { disable = no socket_type = stream wait = no user = root server = /usr/sbin/sshd server_args = -i log_on_success += DURATION USERID log_on_failure += USERID nice = 10 instances = 3 # максимальное количество }
2. Остановите работающий в данный момент демон sshd.
# service sshd stop # chkconfig sshd off
3. Перезапустите xinetd super daemon.
# service xinetd restart
Ограничение одновременного доступа к серверу через ssh (испольуя limit.conf)
Альтернатива возможна, если достаточно ограничения на одно (или небольшое количество) известных имен для входа.
Здесь мы пытаемся ограничить одновременный вход пользователей на сервер через ssh.
1. Если предположить, что количество пользователей, для которых мы хотим ограничить доступ по ssh, равно 3, то в файле /etc/security/limits.conf поместите следующую директиву:
# vi /etc/security/limits.conf #[domain] [type] [item] [value] * hard maxsyslogins 3
domain, выбранный здесь *, предназначен для записи по умолчанию.
type, выбранный здесь, hard установить жесткие ограничения.
item, выбранный здесь, это maxsyslogins максимальное количество всех входов в систему.
Дальнейшие пользователи не могут войти в систему, если общее количество всех входов в систему превышает указанное число (3).
Проверка
Пользователь root уже зарегистрирован на сервере как root и выполнил команду tailf /var/log/secure на своем терминале.
Ниже показан живой отрывок из /var/log/secure во время тестирования вышеуказанного метода:
Mar 25 12:16:01 rhel6 sshd[7888]: Accepted password for user1 from 10.65.223.222 port 53048 ssh2 Mar 25 12:16:01 rhel6 sshd[7888]: pam_unix(sshd:session): session opened for user user1 by (uid=0) Mar 25 12:16:14 rhel6 sshd[7921]: Accepted password for user2 from 10.65.223.222 port 53049 ssh2 Mar 25 12:16:14 rhel6 sshd[7921]: pam_unix(sshd:session): session opened for user user2 by (uid=0) Mar 25 12:16:33 rhel6 sshd[7953]: Accepted password for user3 from 10.65.223.222 port 53050 ssh2 Mar 25 12:16:33 rhel6 sshd[7953]: pam_limits(sshd:session): Too many logins (max 3) for user3 Mar 25 12:16:33 rhel6 sshd[7953]: pam_unix(sshd:session): session opened for user user3 by (uid=0) Mar 25 12:16:33 rhel6 sshd[7953]: error: PAM: pam_open_session(): Permission denied
Есть три пользователя user1, user2 и user3.
Как только третий пользователь попытается войти, он будет возвращен с ошибкой, как показано ниже:
# ssh user3@rhel5 user3@rhel6's password: Too many logins for 'user3'.
Это связано с тем, что root, user1 и user2 уже вошли в систему.
Все остальные пользователи, пытающиеся отныне зайти по ssh, будут возвращены.