DevTools

Cheatsheet SSH / SCP

Acesso remoto seguro e transferência de ficheiros

Voltar às linguagens
SSH / SCP
24 cards encontrados
Categorias:
Versões:

Conexão


4 cards
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


4 cards
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


4 cards
~/.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


4 cards
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


4 cards
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


4 cards
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.