Сети Wi-Fi не указаны - CentOS 7

Я понятия не имею, почему вы пытаетесь это сделать, и это кажется ужасной идеей.

Тем не менее, почему-то этот вопрос меня зацепил, и мне нужно было найти ответ.

Короткий ответ заключается в том, что это не так просто сделать, просто настроив доступные пакеты в debian.

Если вы хотите сделать это, вам нужно написать два модуля: один для NSS и один для PAM.

Для модуля NSS вам необходимо предоставить как минимум _getpwbynam_r . Для модуля PAM гораздо больше шаблонов.

Это похоже на большой объем работы и не то, что вы ищете, но поскольку вы упомянули, что хотите позаботиться об аутентификации самостоятельно, это способ сделать это.

Гораздо более простым вариантом (и, вероятно, намного менее безопасным) было бы использование paramiko для настройки SSH-сервера Python и настройки / подключения функций аутентификации.

К счастью, ребята из paramiko уже выполнили большую часть тяжелого лифтинга на этом демонстрационном сервере , который у них есть на своем репо.

Заменив check_auth_password или check_auth_publickey , вы можете принять любого пользователя как действующего. Пример для пароля auth (*) :

# pip install pam
import pam
MYUSER = 'testuser'

class Server(paramiko.ServerInterface):
    def check_auth_password(self, username, password):
        if password and pam.authenticate(username=MYUSER, password=password):
            return paramiko.AUTH_SUCCESSFUL
        return paramiko.AUTH_FAILED

Поскольку это не StackOverflow, я собираюсь на этом остановиться:)

Это создаст сервер ssh, который будет игнорировать имена пользователей для аутентификации по паролю и будет проверьте заданный пароль у testuser .

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

Я жестко запрограммировал имя пользователя, но вы можете легко получить его из файла конфигурации, поиска в базе данных или чего-то еще.

Вы также можете заменить переменную host_key и, возможно, номер порта.

Есть так много способов прострелить себе ногу этим. Вы должны быть очень-очень-очень осторожными. Этот код еще не готов к производству, просмотрите его целиком. Если вы не нашли в нем ничего плохого, значит, вы не сделали хорошего обзора ;-).


* : это просто замена функции в классе Server в demo_server.py и добавление некоторых вещей вверху

3
18.11.2017, 09:23
0 ответов

Теги

Похожие вопросы