CommunityProgramación y desarrollogithub.com

sabiviji/remote-work-ssh

Conéctate a una máquina remota por SSH y trabaja en un proyecto remoto usando autenticación por alias, clave o contraseña configurada en ssh.md. Úsalo cuando el usuario pida acceder por SSH a un servidor, ejecutar comandos en una máquina remota, inspeccionar o editar archivos en un proyecto remoto, o trabajar en un proyecto remoto.

¿Qué es remote-work-ssh?

Este skill permite a un agente de IA (como Claude Code, Cursor o Codex) conectarse de forma segura a un servidor remoto mediante SSH utilizando alias, clave SSH o contraseña, según lo configurado en un archivo `ssh.md` dentro del proyecto. Su principal utilidad es automatizar tareas remotas como inspeccionar archivos, ejecutar comandos, construir o probar proyectos sin intervención manual del usuario, manteniendo siempre la seguridad mediante validación de claves de host y sin almacenar credenciales en archivos rastreados. Soporta múltiples agentes (Claude, OpenCode, etc.) y resuelve automáticamente la ubicación del archivo de configuración. El flujo de trabajo incluye localizar o crear `ssh.md`, validar los campos obligatorios según el método de autenticación, conectar ejecutando comandos de prueba (hostname y whoami) y luego trabajar dentro de la ruta del proyecto remoto, con reglas estrictas de seguridad como preguntar antes de comandos destructivos y no deshabilitar la verificación de claves de host.

Compatible con✓Claude Code~Codex CLI~Cursor✓OpenCode
npx skills add https://github.com/sabiviji/remote-work-ssh/tree/HEAD/.agents/skills/remote-work-ssh

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

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:

  1. 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, ejecuta find ~ -path '*remote-work-ssh*' -name ssh.example.md 2>/dev/null | head -n 1.
  2. Cópialo a <carpeta del proyecto>/ssh.md.
  3. Agrega ssh.md al .gitignore del proyecto si falta. Crea .gitignore si es necesario.
  4. Detente e indica al usuario que complete ssh.md.

Paso 2: Validar la configuración

ssh.md contiene un bloque YAML. Verifica estos campos:

  • auth debe ser alias, key o password.
  • remote_project_path debe estar configurado.
  • Los campos para el método elegido deben estar configurados:
authCampos obligatorios
aliasalias
keyhost, user, identity_file (port por defecto 22)
passwordhost, 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_file existe. 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_jump está configurado, agrega -J <proxy_jump>.

password

  • Verifica que sshpass esté instalado con command -v sshpass. Si falta, detente e indica al usuario que lo instale.
  • Verifica que la variable de entorno nombrada por password_env esté configurada, sin imprimir su valor.
  • Pasa el valor a sshpass a través de la variable de entorno SSHPASS y -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_jump está configurado, agrega -J <proxy_jump>.
  • No uses BatchMode=yes aquí, 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=no u opciones similares que omitan la verificación.

Paso 4: Trabajar en el proyecto remoto

  • Ejecuta cada comando dentro de remote_project_path, por ejemplo ssh ... '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_path a 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.md del 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

Skills relacionados