DevTools

Cheatsheet SSH / SCP

Acesso remoto seguro e transferência de ficheiros

Volver a los lenguajes
SSH / SCP
24 tarjetas encontradas
Categorías:
Versiones:

Conexão


4 cards
Conectar a servidor
ssh user@servidor.com
ssh -p 2222 user@servidor.com
ssh user@192.168.1.100

Conexión básica.

Comandos remotos
ssh user@host "ls -la"
ssh user@host "df -h && free -m"
ssh user@host "sudo systemctl restart nginx"

Ejecutar sin sesión interactiva.

Opciones útiles
ssh -v user@host     # verbose/debug
ssh -o ConnectTimeout=5 user@host
ssh -o StrictHostKeyChecking=no user@host
ssh -t user@host "htop" # forzar TTY

Flags de conexión.

Sesión persistente
ssh -o ServerAliveInterval=60 \
  -o ServerAliveCountMax=3 user@host

# Mantener conexión activa

Evitar timeout.

Chaves SSH


4 cards
Generar clave
ssh-keygen -t ed25519 -C "email@example.com"
ssh-keygen -t rsa -b 4096

# Archivos generados:
# ~/.ssh/id_ed25519 (privada)
# ~/.ssh/id_ed25519.pub (pública)

Crear par de claves.

Copiar clave al 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 clave.

Gestionar claves
ssh-keygen -l -f ~/.ssh/id_ed25519.pub
ssh-keygen -p -f ~/.ssh/id_ed25519
ssh-keygen -R servidor.com

# Ver fingerprint / cambiar passphrase
# Eliminar de known_hosts

Mantenimiento de claves.

Usar clave específica
ssh -i ~/.ssh/mi_clave user@host

# En ~/.ssh/config:
Host mi-server
  IdentityFile ~/.ssh/mi_clave

Especificar identidad.

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
# Después de configurar:
ssh prod
scp archivo.txt prod:/var/www/

# En vez de:
# ssh -p 2222 -i ~/.ssh/prod_key deploy@192.168.1.50

Simplificar conexiones.

Múltiples hosts
Host dev staging prod
  User deploy
  IdentityFile ~/.ssh/work_key

Host dev
  HostName dev.empresa.com
Host prod
  HostName prod.empresa.com

Compartir configuraciones.

ProxyJump (bastion)
Host interno
  HostName 10.0.0.5
  User admin
  ProxyJump bastion

Host bastion
  HostName bastion.empresa.com
  User ubuntu

Saltar por servidor intermedio.

SCP / SFTP


4 cards
Copiar al servidor
scp archivo.txt user@host:/home/user/
scp -r carpeta/ user@host:/backup/
scp -P 2222 archivo user@host:/tmp/

Subida de archivos.

Copiar del servidor
scp user@host:/var/log/app.log ./
scp -r user@host:/etc/nginx/ ./nginx-backup/
scp user@host:"/path/file*" ./local/

Descarga de archivos.

Entre servidores
scp user1@host1:/archivo user2@host2:/dest/

# Con compresión:
scp -C archivo_grande.zip user@host:/tmp/

Copia remota-remota.

SFTP interactivo
sftp user@host

ls          # listar
cd /var/www # cambiar dir
put local.txt /remote/
get /remote/file.txt ./
bye

Transferencia interactiva.

Túneis e Port Forward


4 cards
Local port forward
ssh -L 8080:localhost:80 user@host

# Acceder en localhost:8080
# → reenvía a host:80

ssh -L 3307:db-interna:3306 user@host

Acceder a servicios remotos localmente.

Remote port forward
ssh -R 9090:localhost:3000 user@host

# En el servidor remoto, puerto 9090
# → reenvía a tu máquina:3000

# Útil para exponer dev server

Exponer servicio local al remoto.

Dynamic (SOCKS proxy)
ssh -D 1080 user@host

# Configurar navegador como SOCKS5
# en localhost:1080

# Todo el tráfico pasa por el servidor

Proxy SOCKS vía SSH.

Túnel en background
ssh -fNL 5433:db:5432 user@host

# -f = background
# -N = sin comando remoto
# -L = local forward

Túnel sin sesión interactiva.

Avançado


4 cards
SSH Agent
eval $(ssh-agent)
ssh-add ~/.ssh/id_ed25519
ssh-add -l  # listar claves
ssh-add -D  # eliminar todas

# Evita escribir la passphrase siempre

Gestionar claves en memoria.

Multiplexación
# ~/.ssh/config:
Host *
  ControlMaster auto
  ControlPath ~/.ssh/sockets/%r@%h-%p
  ControlPersist 600

mkdir -p ~/.ssh/sockets

Reutilizar conexiones (más rápido).

Desactivar password auth
# /etc/ssh/sshd_config:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes

sudo systemctl restart sshd

Endurecer seguridad del servidor.

Rsync sobre SSH
rsync -avz -e "ssh -p 2222" \
  ./proyecto/ user@host:/var/www/app/

rsync -avz --delete \
  user@host:/backup/ ./backup-local/

Sincronización eficiente.