Tutoriel Linux

Chave SSH no Ubuntu: gere-a corretamente antes de desativar as senhas.

Débutant5 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

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.

Tux possui uma chave SSH em frente a um servidor Ubuntu seguro.
Uma chave SSH deve ser gerada, copiada e testada antes de desativar a autenticação por senha.

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_autorizadas o usuário certo;
  • os direitos estão corretos em ~/.ssh E chaves_autorizadas ;
  • Uma segunda sessão SSH por chave funciona antes de qualquer interrupção;
  • sudo /usr/sbin/sshd -t nã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.

sudo apt update && sudo apt upgrade