Рейтинг:1

Условно остановить интерактивный и неинтерактивный вход по ssh и выдать сообщение об ошибке

флаг cn

я хочу предотвратить интерактивный и неинтерактивный Вход по ssh на основе условной логики. Мне нужно проверить имя пользователя и дать сообщение об ошибке.

Люди, использующие sftp (неинтерактивный ssh), также должны пройти тест на удачу.

Как бы я это реализовал? Я полностью контролирую систему.

Я пытался использовать sshd ForceCommand, но согласно https://stackoverflow.com/a/33714333/746461 это не работает для notty.

Я не знаком с PAM и сомневаюсь, что PAM может выводить собственное сообщение об ошибке в случае интерактивного входа в систему.

https://linuxhint.com/understanding_bash_shell_configuration_startup/ говорит неинтерактивная оболочка входа с --noprofile опция может обойти все файлы конфигурации bash. Вот почему я не могу написать свою логику там.

Jeff Schaller avatar
флаг ru
Я бы порекомендовал несколько иной подход и поместил пользователей в группу, а затем использовал директиву Match Group sshd_config для принудительной команды типа /bin/false.
флаг cn
@JeffSchaller Можете ли вы прокомментировать https://stackoverflow.com/a/33714333/746461? Я думал, там написано, что ForceCommand не работает для notty
Рейтинг:2
флаг cn

Я понял. Я могу реализовать модуль PAM для этого.

Сохраните следующее, скажем, в файл /root/checkConnections.

#! /бин/баш

лимит=$1
c=$(pgrep -xcu $PAM_USER sshd)
если [[ $c -ge "$limit" ]]; тогда 
    echo "Разрешено максимальное количество ssh-соединений $limit, но у вас есть $c."
    выход 1
фи

Затем в /etc/pam.d/sshd добавьте

требуется сеанс pam_exec.so stdout /root/checkConnections 5

pam_exec.so выполняет сценарий оболочки, стандартный вывод выводит сообщения на терминал пользователя.

Когда условие не выполняется, эффект такой.

$ ssh локальный хост
Добро пожаловать в Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-74-универсальный x86_64)

94 обновления можно установить сразу.
0 из этих обновлений являются обновлениями безопасности.
Чтобы увидеть запуск этих дополнительных обновлений: apt list --upgradable

Разрешено максимум 5 ssh-соединений, но у вас их 5.
Ошибка /root/checkConnections: код выхода 1
Последний вход: Чт, 24 июня, 12:19:27 2021 с 172.18.33.67
Соединение с локальным хостом закрыто.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.