Este parece ser um bom caso de uso para a autenticação baseada em host. Este é um método de autenticação em que o SSH não usa uma chave individual do usuário na máquina local (neste caso, seu servidor) para autenticar; em vez disso, ele usa a chave privada do host , aquela armazenada em /etc/ssh/
e que só pode ser lida por root
.
Para configurar isso, você precisará criar um arquivo chamado .shosts
na máquina remota, no diretório inicial do usuário no qual deseja que as pessoas efetuem login (não em ~/.ssh
). O arquivo deve ter o conteúdo
server-hostname +
em que server-hostname
é o nome do seu servidor e +
é um sinal de adição literal que serve como um caractere curinga que significa "qualquer usuário".
Você também precisará garantir que a máquina remota possa verificar a chave de host do servidor, o que significa que a chave de host do servidor precisa ser listada em /etc/ssh/ssh_known_hosts
ou ~/.ssh/known_hosts
na máquina remota. Se este não for o caso, você pode configurá-lo fazendo login na máquina remota e executando
ssh-keyscan server-hostname >> /etc/ssh/ssh_known/hosts
Depois de configurar essas etapas, você poderá excluir a chave privada no servidor, se não precisar dela para mais nada. (E se você fizer isso, você sempre pode configurá-lo para ser apenas legível por root
ou algo assim.)
Você também pode facilmente fazer coisas como permitir ou negar a certos usuários o acesso à máquina remota. Veja as man pages de ssh
e hosts.equiv
para detalhes.
Um problema com essa configuração é que os usuários que efetuam login na máquina remota podem modificar .shosts
. Não há nada que eles possam fazer para permitir que façam login na máquina remota como um usuário diferente, mas podem cortar o acesso deles ou de outras pessoas à máquina remota. Se isso for uma preocupação, talvez seja possível tornar .shosts
gravável apenas por root
ou algo assim - não sei se isso funciona, mas você pode tentar e ver. (Outros métodos como o com sudo
são suscetíveis ao mesmo risco, já que um usuário sempre pode excluir ~/.ssh/authorized_keys
.)