Назад | Перейти на главную страницу

Виртуальные пользователи в sshd из базы данных postgres

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

Пока что я установил эти части на сервере Ubuntu:

  1. libnss-pgsql2 для подключения NSS к нескольким представлениям базы данных, в которых перечислены мои пользователи в формате, совместимом с Unix
  2. libpam-pgsql чтобы разрешить аутентификацию PAM с использованием тех же представлений
  3. sshd AuthorizedKeysCommand со сценарием, который аутентифицирует пользователей с их открытым ключом (все еще из базы данных postgresql).

Есть ли проще способ обойти эту проблему? У меня проблемы с правильной настройкой конфигурации nss (отсутствие документации и журналов).

Спасибо за ваше время и помощь.

Я бы выгружал ваших пользователей из БД в LDAP и загружал их в локальный LDAP. Вы можете легко автоматизировать обновления. Это заставит вашу ОС запрашивать пользователей из LDAP, и это будет намного более портативным - libnss-pgsql2 есть не во всех UNIX-подобных системах, если вы когда-нибудь захотите отказаться от Linux. Никогда не знаешь ;)

вы можете использовать ssh-туннелирование, чтобы позволить пользователю подключаться к вашей базе данных. Такие как

ssh -L локальный_порт: IP-адрес / имя хоста: порт_сервера пользователь @ IP-адрес / имя хоста.

здесь пользователь будет пользователем ОС, поэтому для подключения лучше всего предоставить суперпользователя postgres.

Но имейте в виду, что сервер базы данных postgresql должен находиться на этом сервере.

после этого вы можете подключиться с помощью простой команды psql как

psql -h имя хоста / IP-адрес -p порт -U пользователь -d база данных