Tutoriel Linux

Configurar SSH no Linux para seus servidores sem ter que digitar tudo novamente

Débutant4 min de lecture

Quando você administra várias máquinas, as mesmas opções SSH rapidamente ficam 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. Essa configuração vive na sua máquina e indica ao cliente OpenSSH como conectar cada máquina. Ela evita principalmente o uso da chave ou porta errada quando vários ambientes se parecem.

Crie uma entrada por servidor

Crie a pasta se ela não existir, e então 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, o que evita tentativas desnecessárias em um servidor que limita as autenticações.

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

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

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

Adicione configurações comuns no 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. Portanto, coloque os servidores mais específicos no topo e os valores gerais no final.

Host production
    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. É adequado para configurações realmente comuns, como o envio periódico de um sinal para detectar uma conexão travada. Evite colocar uma chave ou um usuário aqui se seus servidores não usarem 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 muito cedo geralmente produz um comportamento inesperado.

Verifique a configuração antes de conectar

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

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

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

Em seguida, 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 de opções. Ele não corrige um servidor que recusa sua chave, uma porta fechada ou uma impressão de host alterada. Se a autenticação frequentemente pede sua frase de segurança, use ssh-agent em vez de remover a frase de segurança da chave.

Para acessar um serviço interno através de um bastião, mantenha uma entrada distinta com ProxyJump e teste-a separadamente. O tunnel 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 o motivo pelo qual 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-se a cada servidor com um alias dedicado.