Trabajo Remoto por SSH
Los detalles de conexión están en ssh.md dentro de la carpeta del proyecto. Léelo antes de cada sesión remota. Nunca adivines hosts, usuarios, puertos, rutas de claves o contraseñas.
Cuándo activarlo
- El usuario pide conectarse, iniciar sesión o ejecutar algo en una máquina remota
- El usuario pide inspeccionar, editar, construir o probar un proyecto remoto
- El usuario menciona un servidor, VPS o host remoto y espera acceso SSH
Paso 1: Localizar ssh.md
La carpeta del proyecto es git rev-parse --show-toplevel, o el directorio actual si eso falla. ssh.md siempre está en <carpeta del proyecto>/ssh.md.
Si no existe, créalo a partir de la plantilla e indica al usuario que lo complete:
- Encuentra
ssh.example.md. Está en la carpeta de este skill, que depende del agente. Verifica estas rutas en orden y usa la primera que exista:.agents/skills/remote-work-ssh/,.claude/skills/remote-work-ssh/,.opencode/skills/remote-work-ssh/,~/.agents/skills/remote-work-ssh/,~/.claude/skills/remote-work-ssh/,~/.config/opencode/skills/remote-work-ssh/. Si ninguna existe, ejecutafind ~ -path '*remote-work-ssh*' -name ssh.example.md 2>/dev/null | head -n 1. - Cópialo a
<carpeta del proyecto>/ssh.md. - Agrega
ssh.mdal.gitignoredel proyecto si falta. Crea.gitignoresi es necesario. - Detente e indica al usuario que complete
ssh.md.
Paso 2: Validar la configuración
ssh.md contiene un bloque YAML. Verifica estos campos:
authdebe seralias,keyopassword.remote_project_pathdebe estar configurado.- Los campos para el método elegido deben estar configurados:
auth | Campos obligatorios |
|---|---|
alias | alias |
key | host, user, identity_file (port por defecto 22) |
password | host, user, password_env (port por defecto 22) |
Si falta un campo obligatorio o auth es desconocido, detente e informa exactamente qué campo está mal. No recurras a otro método.
Paso 3: Conectar
alias
Resuelve la entrada primero, luego conecta:
ssh -G <alias> | grep -E '^(hostname|user|port) '
ssh -o BatchMode=yes <alias> 'hostname && whoami'
key
- Confirma que
identity_fileexiste. Si no, detente. - Usa solo esa clave:
ssh -o BatchMode=yes -o IdentitiesOnly=yes -i <identity_file> -p <puerto> <usuario>@<host> 'hostname && whoami'
- Si
proxy_jumpestá configurado, agrega-J <proxy_jump>.
password
- Verifica que
sshpassesté instalado concommand -v sshpass. Si falta, detente e indica al usuario que lo instale. - Verifica que la variable de entorno nombrada por
password_envesté configurada, sin imprimir su valor. - Pasa el valor a
sshpassa través de la variable de entornoSSHPASSy-e. No pongas la contraseña en un argumento de línea de comandos ni en ninguna salida. - Desactiva los intentos basados en clave para que solo se use la contraseña:
SSHPASS="$(printenv <password_env>)" sshpass -e ssh -o PubkeyAuthentication=no -o PreferredAuthentications=password -p <puerto> <usuario>@<host> 'hostname && whoami'
- Si
proxy_jumpestá configurado, agrega-J <proxy_jump>. - No uses
BatchMode=yesaquí, porque desactiva la autenticación por contraseña.
Claves de host (todos los métodos)
- Si la clave del host es desconocida o ha cambiado, detente. Muestra la huella digital y pide al usuario que la verifique.
- Nunca configures
StrictHostKeyChecking=nou opciones similares que omitan la verificación.
Paso 4: Trabajar en el proyecto remoto
- Ejecuta cada comando dentro de
remote_project_path, por ejemplossh ... 'cd <remote_project_path> && <comando>'. Pon la ruta entre comillas. - Antes de asumir que una herramienta existe en la máquina remota, verifica sus manifiestos o ejecuta
command -v <herramienta>. - No escribas fuera de
remote_project_patha menos que el usuario lo pida.
Reglas de seguridad
- Pregunta antes de comandos destructivos como
rm -rf, pushes forzados, eliminación de bases de datos, operaciones de disco o reinicios de servicios. - Nunca imprimas, copies, registres ni confirmes contraseñas, contenidos de claves o tokens.
- No almacenes credenciales en ningún archivo que no sea el
ssh.mddel proyecto o el entorno. - No ejecutes comandos en la máquina remota que el usuario no haya solicitado.
Operaciones no compatibles
- Almacenar contraseñas en archivos rastreados o en este skill
- Manejar MFA interactivo o códigos de un solo uso en nombre del usuario
- Deshabilitar la verificación de clave de host
- Conectarse a hosts que no estén definidos en
ssh.md