Cheatsheet SSH / SCP
Acesso remoto seguro e transferência de ficheiros
SSH / SCP
24
cards encontrados
Categorias:
Versões:
Conexão
Ligar a servidor
ssh user@servidor.com
ssh -p 2222 user@servidor.com
ssh user@192.168.1.100
Conexão básica.
Comandos remotos
ssh user@host "ls -la"
ssh user@host "df -h && free -m"
ssh user@host "sudo systemctl restart nginx"
Executar sem sessão interativa.
Opções úteis
ssh -v user@host # verbose/debug
ssh -o ConnectTimeout=5 user@host
ssh -o StrictHostKeyChecking=no user@host
ssh -t user@host "htop" # forçar TTY
Flags de conexão.
Sessão persistente
ssh -o ServerAliveInterval=60 \
-o ServerAliveCountMax=3 user@host
# Manter conexão ativa
Evitar timeout.
Chaves SSH
Gerar chave
ssh-keygen -t ed25519 -C "email@exemplo.com"
ssh-keygen -t rsa -b 4096
# Ficheiros gerados:
# ~/.ssh/id_ed25519 (privada)
# ~/.ssh/id_ed25519.pub (pública)
Criar par de chaves.
Copiar chave para servidor
ssh-copy-id user@servidor.com
ssh-copy-id -p 2222 user@host
# Manual:
cat ~/.ssh/id_ed25519.pub | \
ssh user@host "cat >> ~/.ssh/authorized_keys"
Configurar auth por chave.
Gerir chaves
ssh-keygen -l -f ~/.ssh/id_ed25519.pub
ssh-keygen -p -f ~/.ssh/id_ed25519
ssh-keygen -R servidor.com
# Ver fingerprint / mudar passphrase
# Remover de known_hosts
Manutenção de chaves.
Usar chave específica
ssh -i ~/.ssh/minha_chave user@host
# No ~/.ssh/config:
Host meu-server
IdentityFile ~/.ssh/minha_chave
Especificar identidade.
Configuração
~/.ssh/config
Host prod
HostName 192.168.1.50
User deploy
Port 2222
IdentityFile ~/.ssh/prod_key
Host *
ServerAliveInterval 60
Configurar aliases.
Usar alias
# Depois de configurar:
ssh prod
scp ficheiro.txt prod:/var/www/
# Em vez de:
# ssh -p 2222 -i ~/.ssh/prod_key deploy@192.168.1.50
Simplificar conexões.
Múltiplos hosts
Host dev staging prod
User deploy
IdentityFile ~/.ssh/work_key
Host dev
HostName dev.empresa.com
Host prod
HostName prod.empresa.com
Partilhar configurações.
ProxyJump (bastion)
Host interno
HostName 10.0.0.5
User admin
ProxyJump bastion
Host bastion
HostName bastion.empresa.com
User ubuntu
Saltar por servidor intermédio.
SCP / SFTP
Copiar para servidor
scp ficheiro.txt user@host:/home/user/
scp -r pasta/ user@host:/backup/
scp -P 2222 ficheiro user@host:/tmp/
Upload de ficheiros.
Copiar do servidor
scp user@host:/var/log/app.log ./
scp -r user@host:/etc/nginx/ ./nginx-backup/
scp user@host:"/path/file*" ./local/
Download de ficheiros.
Entre servidores
scp user1@host1:/ficheiro user2@host2:/dest/
# Com compressão:
scp -C ficheiro_grande.zip user@host:/tmp/
Cópia remota-remota.
SFTP interativo
sftp user@host
ls # listar
cd /var/www # mudar dir
put local.txt /remote/
get /remote/file.txt ./
bye
Transferência interativa.
Túneis e Port Forward
Local port forward
ssh -L 8080:localhost:80 user@host
# Aceder em localhost:8080
# → encaminha para host:80
ssh -L 3307:db-interna:3306 user@host
Aceder a serviços remotos localmente.
Remote port forward
ssh -R 9090:localhost:3000 user@host
# No servidor remoto, porta 9090
# → encaminha para tua máquina:3000
# Útil para expor dev server
Expor serviço local ao remoto.
Dynamic (SOCKS proxy)
ssh -D 1080 user@host
# Configurar browser como SOCKS5
# em localhost:1080
# Todo o tráfego passa pelo servidor
Proxy SOCKS via SSH.
Túnel em background
ssh -fNL 5433:db:5432 user@host
# -f = background
# -N = sem comando remoto
# -L = local forward
Túnel sem sessão interativa.
Avançado
SSH Agent
eval $(ssh-agent)
ssh-add ~/.ssh/id_ed25519
ssh-add -l # listar chaves
ssh-add -D # remover todas
# Evita digitar passphrase sempre
Gerir chaves em memória.
Multiplexação
# ~/.ssh/config:
Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 600
mkdir -p ~/.ssh/sockets
Reutilizar conexões (mais rápido).
Desativar password auth
# /etc/ssh/sshd_config:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
sudo systemctl restart sshd
Endurecer segurança do servidor.
Rsync sobre SSH
rsync -avz -e "ssh -p 2222" \
./projeto/ user@host:/var/www/app/
rsync -avz --delete \
user@host:/backup/ ./backup-local/
Sincronização eficiente.