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
~/.sshcomchmod 700 ~/.ssh. - Proteja o arquivo
confige cada chave privada comchmod 600. - Verifique o alias com
ssh -G nome_aliasantes 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.
