SSH e Trabalho Remoto
Chaves SSH, tmux, túneis e saltos de bastion - como desenvolvedores Python acessam APIs de staging, rastreiam logs do journald e fazem port-forward de bancos de dados sem deixar chaves sensíveis em máquinas compartilhadas.
Receita
ssh -A -J bastion@jump.acme.com deploy@staging-api.internal
tmux new -s triage
sudo journalctl -u billing-api -fQuando usar isso:
- Triagem de incidentes em VMs de staging/produção
- Port-forward de Postgres acessível apenas na VPC
- Migração
uv runde longa duração com tmux seguro contra desconexão - SCP de wheel ou configuração para host de deploy isolado
Exemplo de Trabalho
# ~/.ssh/config
Host bastion
HostName jump.acme.com
User ubuntu
IdentityFile ~/.ssh/id_ed25519
Host staging-api
HostName 10.0.2.15
User deploy
ProxyJump bastion
LocalForward 15432 staging-db.internal:5432
# Conecta e faz forward do DB para psql local
ssh staging-api
# outro terminal:
psql "postgresql://user@localhost:15432/billing"
# Sessão tmux sobrevive ao sono do laptop
tmux new -s migrate
uv run alembic upgrade head
# desanexar: Ctrl-b dO que isso demonstra:
ProxyJumpvia bastion sem SSH duplo manualLocalForwardmapeia DB remoto para localhost- Sessão nomeada do tmux para migrações longas
- Arquivo de identidade por bloco
Hostna configuração
Mergulho Profundo
Como Funciona
- Autenticação SSH - Preferencialmente por chave; autenticação por senha desabilitada em servidores protegidos.
- Forwarding de Agente -
-Afaz forward do agente para git pull no servidor remoto - use com cautela. - Túneis - LocalForward (remoto para local), RemoteForward (local para remoto), DynamicForward SOCKS.
- tmux - Multiplexa terminais; sessões sobrevivem à conexão SSH.
Checklist de Trabalho Remoto
| Etapa | Comando |
|---|---|
| Testar conexão | ssh -G staging-api configuração em seco |
| Iniciar sessão | tmux new -s work |
| Seguir logs | journalctl -f |
| Copiar artefato | scp -J bastion file deploy@host:/tmp/ |
Notas Python
# Verificação de saúde remota em uma linha
ssh staging-api 'curl -sf http://localhost:8000/health'
# Sincronizar arquivo de ambiente de forma segura (evite se o arquivo contiver segredos - use vault)
scp -J bastion .env.example deploy@staging-api:/opt/billing-api/Armadilhas
- Forwarding de agente para host não confiável - Abuso de chave se o servidor remoto for comprometido. Correção: desabilite
-Aem produção, a menos que seja necessário. - Deixar tmux como root - Sessões compartilhadas confusas. Correção: tmux pessoal na conta do usuário do serviço.
- LocalForward exposto em 0.0.0.0 - DB acessível na rede Wi-Fi do café. Correção: vincule
127.0.0.1:15432:.... - Chaves de produção no laptop - Laptop roubado se torna acesso à produção. Correção: SSO de curta duração + gerenciador de sessão bastion.
- SSH StrictHostKeyChecking desativado globalmente - Risco de MITM. Correção:
known_hostspor ambiente. - Quirks de SCP depreciados - Prefira
rsync -e sshpara sincronização de artefatos grandes.
Alternativas
| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
| AWS SSM Session Manager | Sem chaves SSH em VMs | Apenas SSH on-prem |
| Teleport / Boundary | Acesso privilegiado auditado | Bastion pequeno para equipe é suficiente |
| GitHub Codespaces | Ambiente de desenvolvimento na nuvem | Acesso a dados de produção proibido |
| VPN | Acesso a toda a sub-rede | Apenas um forward de DB necessário |
FAQs
Chave Ed25519 ou RSA?
Ed25519 é o padrão para novas chaves - mais curta, segura; RSA apenas para sistemas legados.
ssh-agent no macOS?
Integração com o Keychain --apple-use-keychain armazena a senha de forma segura.
tmux ou screen?
tmux é o padrão moderno; mesmo objetivo de persistência.
Mosh para Wi-Fi instável?
mosh usa roaming UDP - bom para viagens; requer pacote no servidor.
Túnel reverso para demonstração?
ssh -R 8080:localhost:8000 expõe um FastAPI local temporariamente - risco de segurança, limite o tempo de uso.
VS Code Remote SSH?
Usa a mesma configuração SSH; certifique-se de que o servidor remoto tenha uv e o projeto clonado.
SFTP vs scp?
sftp é interativo; scp é para uso único - rsync é melhor para diretórios de deploy.
Múltiplas chaves do GitHub?
Host github.com-work com IdentityFile na configuração SSH para cada organização.
Gravação de sessões?
Algumas conformidades exigem script ou gravação de sessão teleportada em produção.
Hosts de salto IPv6?
AddressFamily inet explícito se o roteamento v6 estiver quebrado na rede corporativa.
Relacionados
- Noções Básicas de Sysadmin - uma vez conectado
- Gerenciamento de Processos e Recursos - controle de serviço
- SSH e Execução Remota - Python fabric/paramiko
- Implantando FastAPI - estrutura do servidor
Versões da Stack: Esta página foi escrita para Python 3.14.0 (estável 3.14, manutenção 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+ e uv 0.6+.