Numa conexão ssh com autenticação de chave o usuário envia o ID da chave pública que deseja utilizar. Em seguida, o servidor verifica o arquivo autorizado_keys em busca da chave pública.
Gostaria que o servidor não procurasse esse ID no arquivo autorizado_keys, mas usasse o nome de usuário para recuperar a chave de outra fonte (por exemplo, um banco de dados, outro arquivo, um servidor remoto etc.)
É possível fazer isso?
Responder1
Para mudar ocaminho de arquivo, você pode especificar oArquivo de Chaves Autorizadasopção em sshd_config (assumindo que o servidor execute OpenSSH). Você pode fornecer vários caminhos, relativos ao diretório inicial do usuário ou caminhos absolutos com %u
expansão para o nome de usuário.
Por exemplo, para manter a localização padrão deauthorized_keys eadicionarum arquivo em /etc:
AuthorizedKeysFile .ssh/authorized_keys /etc/ssh/users/%u.txt
Para usar umcomando externo, se o servidor estiver usando OpenSSH 6.2 ou posterior, você poderá especificarComando de Chaves Autorizadasno arquivo sshd_config do servidor, apontando para um programa ou script personalizado.
O programa será executado em cada login, receberá um nome de usuário como parâmetro de linha de comando e precisará gerar uma lista de chaves para esse usuário (usando o mesmo formato de chaves_autorizadas) via stdout.
Por exemplo, se você estiver usando LDAP, oSSSDO cliente LDAP já inclui uma ferramenta sss_ssh_authorizedkeys
para recuperar chaves do atributo sshPublicKey do usuário.
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser nobody