Você pode substituir os back-ends do PAM e o NSS (Name Service Switch) por um back-end do MySQL. Você precisará do pam-mysql e libnss-mysql .
Pode ser um exagero apenas para que um aplicativo use o MySQL, mas imaginei que deveria mencioná-lo.
Estou tentando encontrar uma solução que permita que um usuário se conecte a um servidor via SFTP usando uma combinação de nome de usuário / chave fornecida (armazenada no banco de dados MySQL de uma instalação Wordpress), sem precisar manter constantemente dois ou mais sistemas em sincronia.
Eu fiz essa pergunta no Stackoverflow, mas acho que seria melhor respondê-la aqui.
Esta é a consulta do MySQL que obtém duas colunas que possuem o nome de usuário de um usuário e a chave api, que o usuário digitaria em seu cliente SFTP como sua senha:
SELECT m.meta_value, u.user_login
FROM wp_users AS u, wp_usermeta AS m
WHERE m.user_id = u.ID AND m.meta_key = "user_apikey";
No que diz respeito ao sistema de arquivos, existe uma pasta com o mesmo nome do nome de usuário de cada usuário, tudo no mesmo diretório. A pasta deste usuário pode ou não existir. Quando um usuário faz uma conexão SFTP com o servidor, ele deve mostrar apenas o conteúdo dessa pasta, uma vez autenticado.
Espero que alguém saiba de uma solução simples para esse problema. A única limitação que tenho é que isso deve ser executado em uma caixa do CentOS, mas estou bem aberto a quaisquer ferramentas e linguagens.
Você pode substituir os back-ends do PAM e o NSS (Name Service Switch) por um back-end do MySQL. Você precisará do pam-mysql e libnss-mysql .
Pode ser um exagero apenas para que um aplicativo use o MySQL, mas imaginei que deveria mencioná-lo.
Tags ssh authentication mysql sftp wordpress