Se você administra um servidor Ubuntu via SSH, a chave pública deve estar pronta antes de você mexer com a autenticação por senha. Este é o ponto que vejo sendo invertido com muita frequência: nós reforçamos a segurança. sshdRecarregamos o serviço e descobrimos que a chave nunca foi testada corretamente.
Neste guia, começaremos com uma chave. ed25519Instalamos a chave pública no servidor, abrimos uma segunda sessão para testá-la e só então desativamos as senhas. Isso não demora mais do que o esperado e evita que você se bloqueie.

Crie uma chave SSH ed25519 no seu computador.
Na sua máquina local, gere uma chave ed25519. Este é o formato que eu escolheria hoje para administração SSH típica.
ssh-keygen -t ed25519 -a 100 -C "admin@post"
O comando pergunta onde você deseja salvar a chave. Se você ainda não possui uma chave dedicada, pode manter o caminho sugerido:
~/.ssh/id_ed25519
Adicione uma senha. Em um laptop ou computador que sai do escritório, eu não deixaria uma chave privada desprotegida. A senha protege a chave caso o arquivo seja copiado ou se a máquina for comprometida.
Em seguida, verifique se ambos os arquivos existem:
ls -l ~/.ssh/id_ed25519 ~/.ssh/id_ed25519.pub
O arquivo sem extensão .pub é a chave privada. Ela não deve ser enviada para o servidor, copiada para um ticket ou compartilhada. O arquivo .pub é a chave pública, aquela que você instalará no Ubuntu.
Instale a chave pública no Ubuntu
Se você ainda tiver acesso por senha, o método mais simples é ssh-copy-id :
ssh-copy-id -i ~/.ssh/id_ed25519.pub usuário@servidor
Substituir usuário por meio da conta SSH de destino, e servidor por endereço IP ou nome IN. O comando adiciona sua chave pública em ~/.ssh/chaves_autorizadas lado do servidor.
Se ssh-copy-id Se não estiver disponível, você pode fazer isso manualmente a partir de uma sessão SSH existente:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
Cole uma única linha: o conteúdo completo do seu arquivo. id_ed25519.pubNunca cole a chave privada. Se você não tiver certeza, o arquivo público geralmente começa com ssh-ed25519.
Faça o teste em uma segunda sessão antes de fechar a anterior.
Não feche sua sessão SSH atual. Abra um segundo terminal e teste a conexão com a chave:
ssh -i ~/.ssh/id_ed25519 usuário@servidor
Se você acessar o servidor sem a senha da conta, a chave funcionará. Se a conexão ainda solicitar a senha do usuário, verifique primeiro as permissões:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
ls -ld ~/.ssh
ls -l ~/.ssh/authorized_keys
No Ubuntu, verifique também os logs do SSH caso a chave seja rejeitada:
sudo journalctl -u ssh -n 80 --no-pager
Um proprietário de pasta incorreto, uma chave colada em várias linhas ou uma conta de destino diferente são motivos suficientes para bloquear a autenticação. Não modifique a configuração SSH até que esta etapa esteja concluída.
Prepare o sshd antes de desativar as senhas.
Antes de alterar a configuração, faça um backup do arquivo principal:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
Em seguida, verifique se há algum arquivo em /etc/ssh/sshd_config.d/ Já definimos a autenticação por chave ou senha:
sudo grep -R "^PubkeyAuthentication|^PasswordAuthentication" /etc/ssh/sshd_config /etc/ssh/sshd_config.d/*.conf 2>/dev/null
No Ubuntu, prefiro criar um arquivo dedicado em vez de modificar dez linhas no meio do arquivo principal:
sudo nano /etc/ssh/sshd_config.d/99-disable-password.conf
Adicionar:
Autenticação por chave pública sim
Autenticação por senha não
Antes de reiniciar o SSH, teste a sintaxe. Isso é imprescindível em um servidor remoto.
sudo /usr/sbin/sshd -t
Se o comando não retornar nada, a sintaxe é válida. Se exibir um erro, corrija-o antes de recarregar.
Recarregue o SSH sem interromper o seu acesso.
Após a validação da sintaxe, recarregue o serviço:
sudo systemctl reload ssh
sudo systemctl status ssh --no-pager
Mantenha a primeira sessão aberta. Em um segundo terminal, teste novamente a conexão baseada em chave:
ssh -i ~/.ssh/id_ed25519 usuário@servidor
Teste também se uma conexão sem chave falha, caso você tenha uma conta de teste ou uma máquina onde a chave não esteja carregada. O objetivo é verificar a realidade, não apenas ler uma linha de configuração.
Se você usa SSH no Ubuntu, mantenha o guia à mão. Reiniciando o SSH no UbuntuE se você tiver um firewall local, verifique também suas regras com base no artigo sobre UFW antes de abrir um servidor.
Os controles que impedem o confinamento
- A chave privada permanece exclusivamente no seu computador;
- a chave pública está de fato em
~/.ssh/chaves_autorizadaso usuário certo; - os direitos estão corretos em
~/.sshEchaves_autorizadas; - Uma segunda sessão SSH por chave funciona antes de qualquer interrupção;
sudo /usr/sbin/sshd -tnão retorna nenhum erro;- O firewall ainda está permitindo a porta SSH correta.
Se você perder o acesso SSH após uma alteração, precisará usar o console de recuperação, KVM, acesso do provedor de nuvem ou o modo de resgate. Este método visa evitar isso. Para um reparo mais completo, você também pode consultar o guia sobre uma reinstalação limpa do SSH no Ubuntu.
Para documentação oficial, o Ubuntu mantém uma página sobre Servidor OpenSSHPáginas de referência ssh-keygen E ssh-copy-id Eles também detalham as opções utilizadas aqui.