Tutoriel Linux

Configurar SSH em Linux para seus servidores sem precisar reescrever tudo

Débutant4 min de lecture

Quando você administra várias máquinas, as mesmas opções SSH rapidamente aparecem no histórico: usuário, porta, chave privada, às vezes um salto. O arquivo ~/.ssh/config substitui essa linha interminável por um nome curto, por exemplo, ssh preprod.

Você não precisa modificar o servidor. Esta configuração reside no seu computador e indica ao cliente OpenSSH como se conectar a cada máquina. Ela evita principalmente o uso da chave ou porta errada quando vários ambientes são semelhantes.

Crie uma entrada por servidor

Crie a pasta se ela não existir, e abra o arquivo de configuração:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/config

Depois, adicione um bloco por máquina. Aqui, preprod é apenas um alias local. Substitua o endereço, a conta, a porta e o caminho da chave pelos seus valores.

Host preprod
    HostName 192.0.2.44
    User admin
    Port 2222
    IdentityFile ~/.ssh/id_ed25519_preprod
    IdentitiesOnly yes

Você poderá então executar ssh preprod. HostName contém o verdadeiro nome DNS ou o endereço IP, User a conta remota e Port a porta SSH. IdentityFile seleciona a chave privada esperada. Com IdentitiesOnly yes, o cliente não oferece todas as chaves carregadas pelo seu agente SSH, evitando tentativas desnecessárias em um servidor que limita as autenticações.

Se você já estiver usando uma chave, verifique primeiro se ela está bem protegida. Uma chave privada não deve ser legível por outras contas no seu computador:

chmod 600 ~/.ssh/id_ed25519_preprod
chmod 600 ~/.ssh/config

O guia para gerar uma chave SSH no Ubuntu cobre a criação do par de chaves. Nunca copie uma chave privada para o servidor. Apenas a chave pública deve ser colocada em ~/.ssh/authorized_keys do lado remoto.

Adicione configurações comuns ao final do arquivo

Um arquivo config pode conter vários blocos Host. O cliente OpenSSH retém o primeiro valor encontrado para a maioria das opções. Coloque, portanto, os servidores mais específicos no topo e os valores gerais ao final.

Host produção
    HostName prod.example.net
    User deploy
    IdentityFile ~/.ssh/id_ed25519_production
    IdentitiesOnly yes

Host backup
    HostName backup.example.net
    User backup
    Port 2201
    IdentityFile ~/.ssh/id_ed25519_backup
    IdentitiesOnly yes

Host *
    ServerAliveInterval 30
    ServerAliveCountMax 3

O bloco Host * se aplica a todos os aliases. Ele é adequado para configurações realmente comuns, aqui o envio periódico de um sinal para detectar uma conexão travada. Evite colocar uma chave ou usuário se seus servidores não utilizarem todos a mesma conta.

Você também pode agrupar hosts que seguem a mesma regra, com um padrão como Host *.intra. Mantenha as exceções acima deste bloco. Um alias ambíguo ou uma regra geral colocada cedo demais geralmente produz um comportamento surpreendente.

Verifique a configuração antes de se conectar

O seguinte comando exibe a configuração final calculada para um alias, sem abrir uma sessão. É muito útil após uma modificação:

ssh -G preprod | grep -E '^(hostname|user|port|identityfile|identitiesonly) '

Verifique se hostname, user e port correspondem bem à máquina desejada. Confira também o caminho retornado para identityfile. Se você acabou de mover uma chave, o SSH pode ainda apontar para o arquivo antigo.

Depois, faça um teste simples:

ssh preprod
ssh -v preprod

A opção -v exibe as etapas de conexão e os arquivos de configuração lidos. Não publique essa saída como está em um ticket ou chat: ela pode revelar seus nomes de host, contas e caminhos locais.

Quando o arquivo config não é suficiente

Um alias SSH resolve a repetição das opções. Não corrige um servidor que recusa sua chave, uma porta fechada ou uma impressão de host modificada. Se a autenticação frequentemente solicitar sua frase-secreta, use ssh-agent em vez de remover a frase-secreta da chave.

Para acessar um serviço interno através de um bastion, mantenha uma entrada separada com ProxyJump e teste-a separadamente. O túnel SSH atende a outra necessidade: ele transporta uma porta local ou remota, não substitui a configuração de um host.

  • Proteja ~/.ssh com chmod 700 ~/.ssh.
  • Proteja o arquivo config e cada chave privada com chmod 600.
  • Verifique o alias com ssh -G nome_alias antes da primeira conexão.
  • Teste cada novo servidor com seu alias, e mantenha as opções comuns em um bloco Host * colocado no final do arquivo.

A documentação oficial ssh_config(5) detalha cada diretiva. Reserve dois minutos para reler a saída de ssh -G antes de usar um alias em uma máquina de produção: é mais rápido do que procurar por que o SSH escolheu a chave errada.

Computador Linux conectado a vários servidores para uma configuração SSH
Uma configuração SSH local permite conectar a cada servidor com um alias dedicado.
sudo apt update && sudo apt upgrade