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

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

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

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

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

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

2 ответа

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

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

ssh -L local_port:IP-адрес / имя хоста:server_port user@IP-адрес / имя хоста.

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

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

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

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

Другие вопросы по тегам