Nossa equipe usa uma configuração semelhante em nossos servidores de desenvolvimento. Se nossos desenvolvedores precisarem executar comandos para controlar a instância do servidor, eles poderão usar nosso comando 'assume' - que é simplesmente um wrapper em torno do ssh. Os servidores de produção estão fora dos limites para os desenvolvedores, a menos que precisemos depurar algo sério.
Todo desenvolvedor autorizado a efetuar login na conta da instância do servidor possui uma entrada nas authorized_keys desse servidor ( Veja o arquivo AUTHORIZED_KEYS FORMATO DE ARQUIVO para detalhes ), mas cada chave autorizada tem um sinalizador que define uma variável de ambiente exclusiva para seu nome de usuário:
environment="SSHUSER=jason" ssh-rsa (BASE64-ENCODED-KEY) jason@localhost
Nesse exemplo da .bashrc, eu tenho um pequeno código:
USERHOME=$(eval "echo ~$SSHUSER")
if [ -f "$USERHOME/.client_bashrc" ]; then
. "$USERHOME/.client_bashrc"
fi
Nossos desenvolvedores podem manter um arquivo .client_bashrc (separado de seu .bashrc) com permissões legíveis em seu diretório pessoal. Separar seus .bashrc de .client_bashrc ajuda na segurança, pois eles podem manter definições privadas e variáveis de ambiente em .bashrc. Opcionalmente, eles podem colocar uma linha de código em seu bashrc pessoal para simplesmente incluir .client_bashrc e manter ali aliases e definições que facilitam o trabalho com o sistema. (Isso tudo assume que o diretório home do usuário é acessível a partir do servidor dev.)
Warner faz uma boa observação em seu comentário de que essa configuração de nome de usuário compartilhado é contra as práticas recomendadas de segurança. Nosso sistema evoluiu de uma conta em um host compartilhado anos atrás. Estamos apenas chegando agora para limitar o poder das contas de desenvolvedores e mudar para um sistema em que as ações do desenvolvedor são colocadas em um log de auditoria.