A autenticação por chave SSH é uma das formas mais seguras e recomendadas de acessar servidores remotamente. Ela elimina a necessidade de senhas durante o login, reduzindo o risco de ataques de força bruta e outros tipos de vulnerabilidades associadas ao uso de senhas.
Este tutorial guia você na configuração de acesso SSH utilizando chaves públicas e privadas, desde a geração no servidor até a autenticação no cliente. Também inclui dicas importantes para evitar problemas de acesso e recomendações de segurança.
Tenha cuidado ao configurar seu servidor para acesso exclusivo por chave pública. Antes de desativar a autenticação por senha, certifique-se de que:
- A conexão com a chave está funcionando corretamente.
- Você mantém backups das chaves privadas em local seguro.
- Existe um método alternativo de recuperação, como um console web oferecido pela sua hospedagem.
Vamos começar! 🚀
Observações importantes:
- MUDE
127.0.0.1
pelo IP desejado (público, interno ou do Tailscale). - MUDE
ubuntu
pelo usuário desejado, comoseuusuario
. - MUDE
conecaoautorizadaB
pelo nome de sua preferência.
-
Acesse o Servidor B como
root
: -
Garanta que o diretório
.ssh
existe:mkdir -p /root/.ssh chmod 700 /root/.ssh
-
Gere o par de chaves SSH no Servidor B:
ssh-keygen -t rsa -b 4096 -C "root@conecaoautorizadaB"
- Quando solicitado, salve a chave no arquivo
/root/.ssh/conecaoautorizadaB
(ou pressione Enter para o caminho sugerido). - Não insira senha (pressione Enter para uma passphrase vazia).
- Quando solicitado, salve a chave no arquivo
-
Confirme que os arquivos foram gerados:
ls -l /root/.ssh/
Você verá algo como:
-rw------- 1 root root 3381 jan 19 21:01 conecaoautorizadaB -rw-r--r-- 1 root root 739 jan 19 21:01 conecaoautorizadaB.pub
-
Adicione a chave pública
conecaoautorizadaB.pub
ao arquivoauthorized_keys
:cat /root/.ssh/conecaoautorizadaB.pub >> /root/.ssh/authorized_keys
-
Verifique o conteúdo do arquivo
authorized_keys
:cat /root/.ssh/authorized_keys
-
Ajuste as permissões para maior segurança:
chmod 600 /root/.ssh/authorized_keys chmod 700 /root/.ssh
-
Edite o arquivo de configuração do SSH:
nano /etc/ssh/sshd_config
-
Certifique-se de que estas linhas estão configuradas:
PubkeyAuthentication yes PermitRootLogin prohibit-password PasswordAuthentication yes
-
Reinicie o serviço SSH para aplicar as mudanças:
systemctl restart ssh
-
PasswordAuthentication yes
deve permanecer ativado inicialmente. Isso garante que você possa usar a senha para acessar o servidor caso algo dê errado durante a configuração da chave pública. -
⚠️ Risco de Bloqueio Permanente: Se você desativar oPasswordAuthentication
(definindo comono
) e perder a chave privada, o acesso ao servidor será bloqueado para sempre.
Antes de desativar este parâmetro:- Certifique-se de que:
- A autenticação por chave pública está funcionando corretamente.
- Você possui uma cópia segura da chave privada.
- Sua hospedagem oferece algum método de recuperação, como um console web.
- Um usuário de emergência está configurado com senha (opcional).
- Certifique-se de que:
-
No macOS, abra o terminal e crie o diretório
.ssh
(se não existir):mkdir -p ~/.ssh chmod 700 ~/.ssh
-
Verifique o conteúdo do diretório
.ssh
:ls -l ~/.ssh
Saída típica:
total 0
-
No Servidor B, exiba o conteúdo da chave privada:
cat /root/.ssh/conecaoautorizadaB
-
No macOS, crie o arquivo da chave privada:
nano ~/.ssh/conecaoautorizadaB
-
Cole o conteúdo da chave privada copiado do Servidor B no arquivo.
-
Ajuste as permissões da chave privada no macOS:
chmod 600 ~/.ssh/conecaoautorizadaB
-
Verifique se o arquivo foi criado corretamente:
ls -l ~/.ssh/conecaoautorizadaB
Saída esperada:
-rw------- 1 ubuntu staff 3381 jan 19 21:01 /Users/ubuntu/.ssh/conecaoautorizadaB
-
No macOS, teste o acesso ao Servidor B com a chave privada:
ssh -i ~/.ssh/conecaoautorizadaB [email protected]
- Substitua
127.0.0.1
pelo IP do Servidor B.
- Substitua
-
Se funcionar, você será conectado sem a necessidade de senha.
Se a conexão falhar, use o modo verbose para identificar o problema:
ssh -v -i ~/.ssh/conecaoautorizadaB [email protected]
-
Mensagens importantes a observar:
Authentication succeeded (publickey)
: Conexão bem-sucedida.Permission denied (publickey,password)
: A chave pública não está configurada corretamente no servidor.
-
Soluções comuns:
-
Certifique-se de que a chave pública foi adicionada ao
authorized_keys
no Servidor B:cat /root/.ssh/authorized_keys
Verifique se contém algo como:
ssh-rsa AAAAB3Nza... root@conecaoautorizadaB
-
Verifique as permissões no Servidor B:
chmod 700 /root/.ssh chmod 600 /root/.ssh/authorized_keys
-
Garanta que o serviço SSH está ativo:
systemctl status ssh
-
-
Abra o Termius e vá para Settings > Keys.
-
Adicione a chave privada:
- Clique em New Key.
- Escolha Paste e cole o conteúdo da chave privada (
~/.ssh/conecaoautorizadaB
no macOS). - Salve com um nome descritivo, como
ServidorB
.
-
Configure o host do Servidor B:
- Vá para Hosts > New Host.
- Adicione o IP ou hostname do Servidor B (ex.:
127.0.0.1
). - Em Credentials, escolha a chave privada recém-adicionada.
-
Teste a conexão diretamente no Termius.
Seguindo esses passos do zero, você terá acesso ao Servidor B configurado corretamente com autenticação por chave SSH. 🚀