Login sem senha via SSH (Autenticação por Chaves)

Este guia explica como configurar acesso SSH sem senha usando chaves públicas. A abordagem vale para Linux (Debian e derivados), macOS e também Windows (PowerShell/WSL com OpenSSH).

Visão geral

  1. Gerar um par de chaves no cliente.
  2. Instalar a chave pública no servidor (em ~/.ssh/authorized_keys).
  3. Testar a conexão SSH.
  4. (Opcional) Criar um ~/.ssh/config para facilitar comandos e selecionar a identidade automaticamente.

1) Gerar o par de chaves no cliente

No computador de onde você se conecta, execute um dos comandos abaixo. Recomenda-se ED25519:

ssh-keygen -t ed25519 -C "seu_email@exemplo.com"

Alternativa (ainda comum, porém maior e mais lenta):

ssh-keygen -t rsa -b 4096 -C "seu_email@exemplo.com"
  • No lugar de seu_email@exemplo.com você pode colocar qualquer comentário que identifique essa chave, por exemplo usuário@host
  • Quando solicitar o caminho do arquivo, tecle Enter para aceitar o padrão (~/.ssh/id_ed25519 ou id_rsa).
  • Para não usar passphrase (acesso totalmente sem senha), tecle Enter quando perguntado pela frase secreta. (Opcionalmente, defina uma passphrase e use ssh-agent.)

Permissões corretas no cliente

Em sistemas tipo Unix (Linux/macOS), ajuste as permissões:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub

2) Copiar a chave pública para o servidor

Método recomendado (usa senha apenas uma vez):

ssh-copy-id usuario@servidor

Se ssh-copy-id não estiver disponível, faça manualmente:

cat ~/.ssh/id_ed25519.pub | ssh usuario@servidor "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Permissões no servidor

Após instalar a chave pública, no servidor garanta:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

3) Testar o login

ssh usuario@servidor

Se tudo estiver correto, o servidor autenticará sua chave e não pedirá senha.

4) (Opcional) Simplificar com ~/.ssh/config

No cliente, crie/edite ~/.ssh/config e adicione um bloco para cada host:

Host meu-servidor
    HostName 10.10.10.10
    User usuario
    IdentityFile ~/.ssh/id_ed25519
  • Host meu-servidor: é o apelido que você vai usar no comando SSH
  • HostName: IP ou domínio do servidor.
  • User: o usuário que você usava no ssh usuario@meu-servidor.
  • IdentityFile: caminho da sua chave privada (se usou ssh-keygen padrão, vai estar em ~/.ssh/id_ed25519).

Agora você pode conectar usando apenas:

ssh meu-servidor

Ajuste as permissões do arquivo de configuração:

chmod 600 ~/.ssh/config

Dicas e boas práticas

  • Várias identidades: gere pares de chaves diferentes para ambientes distintos (pessoal, trabalho) e selecione com IdentityFile ou IdentitiesOnly yes no bloco do host.
  • Agente SSH: se usar passphrase, carregue a chave no ssh-agent para evitar digitar a cada conexão (eval $(ssh-agent), ssh-add ~/.ssh/id_ed25519).
  • Segurança do servidor: após confirmar que a autenticação por chave funciona, considere desabilitar PasswordAuthentication no /etc/ssh/sshd_config e reiniciar o serviço. Faça isso com cautela e mantenha uma sessão aberta para evitar bloqueios.
  • Backup: guarde a chave privada (arquivo sem .pub) de forma segura. Nunca compartilhe a chave privada.

Windows (PowerShell/WSL)

  • No Windows 10/11 com OpenSSH Client: execute os mesmos comandos (ssh-keygen, ssh-copy-id via WSL ou manual). As chaves ficam normalmente em C:\Users\SEU_USUARIO\.ssh\.
  • No WSL, o caminho padrão é ~/.ssh/ do Linux (dentro da distro).

Resolução de problemas (Troubleshooting)

  • Permissões incorretas: pastas/arquivos de chave e authorized_keys precisam das permissões indicadas.
  • Chave errada: confira se você copiou a pública (*.pub) para o servidor.
  • Usuário/host: confirme User e HostName no ~/.ssh/config.
  • Verbosidade: use ssh -vvv usuario@servidor para depurar.

Resumo rápido

  1. Gerar o par de chaves no cliente (ssh-keygen).
  2. Instalar a chave pública no servidor (ssh-copy-id ou manual).
  3. Testar (ssh usuario@servidor).
  4. (Opcional) Configurar ~/.ssh/config para apelidos e identidade.

Compatível com Debian GNU/Linux e similares, como Proxmox VE e OPNsense (FreeBSD), e aplicável em grande parte ao Windows (WSL/PowerShell) e macOS.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima