~/docs /DevOps/SSH Config y Túneles
DevOps
SSH Config y Túneles
Imported from Notion: SSH Config y Túneles
updated:: 2026.07.10
Qué resuelve
Configurar accesos SSH cómodos con ~/.ssh/config, usar túneles locales/remotos y transferir archivos con scp o rsync.
~/.ssh/config
Archivo:
~/.ssh/config
Ejemplo:
Host prod
HostName 203.0.113.10
User deploy
Port 22
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
Con eso:
ssh prod
Permisos:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/config
Debug de conexión
ssh -vvv prod
Ver configuración efectiva:
ssh -G prod | less
ProxyJump
Con salto por bastion:
Host bastion
HostName 198.51.100.10
User deploy
IdentityFile ~/.ssh/id_ed25519
Host internal
HostName 10.0.0.20
User deploy
ProxyJump bastion
IdentityFile ~/.ssh/id_ed25519
Conectar:
ssh internal
Túnel local
Exponer en tu máquina local un servicio que vive en el servidor:
ssh -L 8080:127.0.0.1:80 prod
Luego abres:
http://localhost:8080
Uso típico: ver una app interna, panel admin o base de datos accesible solo desde el servidor.
Túnel remoto
Exponer en el servidor un puerto que apunta a tu máquina local:
ssh -R 9000:127.0.0.1:3000 prod
[!NOTE] ⚠️ Los túneles remotos dependen de la config del servidor (
AllowTcpForwarding,GatewayPorts) y pueden exponer servicios. Úsalos con intención clara.
scp
Copiar archivo local al servidor:
scp archivo.txt prod:/tmp/
Copiar del servidor a local:
scp prod:/var/log/app.log .
Copiar carpeta:
scp -r carpeta prod:/tmp/
rsync
Subir carpeta sincronizando:
rsync -avz --progress ./dist/ prod:/opt/app/dist/
Simular antes:
rsync -avzn --delete ./dist/ prod:/opt/app/dist/
Sincronizar con borrado:
rsync -avz --delete ./dist/ prod:/opt/app/dist/
[!NOTE] ⚠️
--deleteborra en destino lo que no exista en origen. Usa primero-npara dry-run.
Errores comunes
-
Permisos abiertos en
~/.ssh/configo claves privadas. -
No usar
IdentitiesOnly yesy que SSH pruebe claves equivocadas. -
Confundir túnel local
-Lcon remoto-R. -
Usar
scp -rpara sincronizaciones repetidas donde convienersync. -
Ejecutar
rsync --deletesin dry-run.
Checklist final
-
Tengo alias en
~/.ssh/config. -
Probé
ssh -vvvsi falla. -
Uso
ProxyJumpsi hay bastion. -
Sé si necesito
-Lo-R. -
Para transferencias repetidas uso
rsync. -
Antes de
--delete, ejecuto dry-run con-n.
- EOF -