Dê uma olhada na command
-option para o arquivo authorized_keys-do SSH. Dessa forma, você pode forçar um comando em usuários específicos que acessam sua máquina, dependendo de sua chave SSH.
Imagine um usuário chamado "git" no seu servidor. Este usuário tem o seguinte arquivo authorized_keys como exemplo:
command="/path/to/script user1",no-port-forwarding,no-X11-forwarding,no-pty ssh-rsa [public key of user1]
command="/path/to/script user2",no-port-forwarding,no-X11-forwarding,no-pty ssh-rsa [public key of user2]
Portanto, quando user1 executa ssh [email protected] "/execute/command --with --parameter"
, /path/to/script
é chamado (como usuário git). Este script pode acessar o comando original ( /execute/command --with --parameter
) na variável de ambiente $ SSH_ORIGINAL_COMMAND (mergulhe na documentação do SSH para mais detalhes).
Desta forma, é apenas uma questão de obter as linhas corretas no arquivo authorized_keys (você pode construir dinamicamente o arquivo a partir das chaves armazenadas em seu banco de dados).
De lá, você pode escrever seu próprio shell ou fazer o que quiser com o comando original.
Isso é basicamente como o gitolite e a gitosis gerenciam permissões de repositório git (o Github usa um desses eu acho).
Espero que isso ajude um pouco - Atenciosamente!