Можно ли привязать логин веб-приложения к SSH-серверу? Я хотел бы иметь доступ к веб-панели управления, подключенной к группе пользователей SSH. Они могут использовать тот же пароль для входа в панель управления, что и для своей обычной учетной записи SSH. Им не нужно предоставлять им доступ по SSH - просто выполните аутентификацию по имени пользователя и паролю. В идеале он мог бы использовать свой SSH-ключ для автоматического входа в систему, когда они посещают панель управления, но я скептически отношусь к тому, что это возможно.
По большей части ваш вопрос сводится к следующему: я хочу, чтобы мое веб-приложение аутентифицировало пользователей по системной базе данных пользователей (/etc/passwd
, /etc/shadow
и /etc/group
), как и SSH. Уровень аутентификации системы Linux на жаргоне - PAM, подключаемые модули аутентификации.
Самый быстрый, скорее всего, настроить Apache для поддержки PAM. Рецепт - запустить pwauth и mod_authnz_external в результате конфигурация Apache выглядит примерно так:
DefineExternalAuth pwauth pipe /usr/sbin/pwauth
<Directory /var/www/yourapp>
AuthType Basic
AuthName "Your app requires authentication"
AuthBasicProvider external
AuthExternal pwauth
# any valid username/password is allowed access
Require valid-user
## Only bob and sarah allowed
# Require user bob sarah
## Only the members of the group yourappusers are granted access
# Require group yourappusers
</Directory>
В более крупных средах аутентификация пользователя на основе локального файла часто заменяется центральным каталогом пользователя, обычно каталогом LDAP. На системном уровне это вопрос изменения конфигурации PAM, после чего все приложения, которым требуется аутентификация, мгновенно узнают LDAP.
Есть апач Модуль LDAP также, хотя обычно большинство приложений изначально поддерживают аутентификацию LDAP, а не полагаются на Apache. Это также позволяет работать таким вещам, как кнопка «выйти из системы», функциональность которой не существует в Apache auth.
Ключи SSH относятся к протоколу SSH, и хотя восстановление этой функциональности в веб-приложении может показаться вам интересной задачей, вы должны знать, что обычно используемый приблизительный эквивалент аутентификации с открытым ключом SSH в веб-приложениях - это развертывание клиентских сертификатов SSL.
Если вам действительно нужно шифрование, обеспечиваемое SSH, вы можете сделать следующее:
Попросите Apache прослушивать только локальный хост на сервере, на котором также работает SSHd. Ничего другого, если вы хотите сохранить его в безопасности. Затем вы просто создаете SSH-туннель к серверу, который перенаправляет самого себя на порт, который прослушивает Apache.
Это можно сделать так: ssh -L 8080:127.0.0.1:80 user@yourserver.com
(это для OS X)
Когда соединение установлено, вы можете просто перейти на localhost: 8080 в браузере на удаленном (клиентском) компьютере и получить доступ к веб-странице.