ssh¶
O que é¶
Cliente OpenSSH para acesso remoto seguro e execução de comandos em outro host via TCP/22 (ou porta customizada).
Para que serve¶
- Acessar servidor Linux remotamente com autenticação por chave ou senha
- Executar comandos de diagnóstico sem abrir sessão interativa (
ssh host comando) - Criar túneis para acessar serviços internos (DB, Redis, painel web) sem expor portas
- Investigar problemas de rede a partir da origem real do tráfego (bastion, app server, pod)
Quando usar¶
- Quando você precisa validar conectividade do servidor A para o B (e não da sua máquina local)
- Quando um serviço interno só é alcançável via bastion/jump host
- Quando quer testar porta remota com segurança (
ssh -vvv,ssh -p,ssh -J) - Quando precisa encaminhar porta local/remota para troubleshooting temporário
Exemplos de uso¶
# login remoto simples
ssh admin@10.10.10.20
# debug detalhado de conexão SSH
ssh -vvv admin@10.10.10.20
# executar comando remoto sem shell interativo
ssh admin@10.10.10.20 'ss -tulpen | grep 443'
# acessar host privado via bastion
ssh -J ops@bastion.corp.local ubuntu@app-01.internal
# túnel local: localhost:15432 -> db.internal:5432
ssh -L 15432:db.internal:5432 ops@bastion.corp.local
Exemplos de saída¶
$ ssh -vvv admin@10.10.10.20
...
debug1: Connecting to 10.10.10.20 [10.10.10.20] port 22.
debug1: Connection established.
debug1: Authenticating to 10.10.10.20:22 as 'admin'
debug1: Offering public key: /home/user/.ssh/id_ed25519
debug1: Server accepts key: /home/user/.ssh/id_ed25519
Authenticated to 10.10.10.20 ([10.10.10.20]:22).
...
Leitura rápida:
- Parou em Connecting to ... + timeout: rota/firewall/porta bloqueada.
- Permission denied (publickey,password): falha de credencial/política de autenticação.
- Host key verification failed: chave do host mudou ou known_hosts divergente.
Dicas de troubleshooting¶
- Use
ssh -vvvpara separar problema de rede, handshake e autenticação. - Valide porta antes com
nc -vz host 22quando suspeitar de bloqueio L3/L4. - Em salto via bastion, teste primeiro bastion isoladamente e depois
-J. - Se houver erro de host key, confirme mudança legítima antes de remover entrada do
~/.ssh/known_hosts. - Em conexões instáveis, configure keepalive (
ServerAliveInterval,ServerAliveCountMax).
Comparação com ferramentas similares¶
telnet/nc: testam conectividade de porta, mas não fornecem acesso administrativo seguro.- VPN: abre conectividade de rede ampla;
sshé mais pontual e auditável para acesso por host. - Console de cloud: útil para emergência, porém
sshé mais automatizável para operação diária.
Flags importantes¶
-p <porta>: conecta em porta diferente de 22.-i <chave>: define chave privada específica.-J <jump_host>: conexão via bastion (ProxyJump).-L [local:]host:porta/-R: túnel local/remoto.-N: não executa comando remoto (útil para túnel).-T: desabilita pseudo-terminal (bom para scripts).-o ConnectTimeout=5: timeout de conexão explícito.-vvv: máximo nível de verbosidade de debug.
Boas práticas¶
- Preferir autenticação por chave + passphrase (evitar senha em produção).
- Desabilitar login direto de
roote usar usuário nominativo +sudo. - Centralizar parmetros em
~/.ssh/configpara reduzir erro operacional. - Rotacionar chaves e remover acessos de usuários inativos.
- Registrar comandos críticos executados remotamente no processo de incidente.
Referências¶
man sshman ssh_config- OpenSSH manual: https://www.openssh.com/manual.html