sabiviji/remote-work-ssh

Se connecte à une machine distante via SSH et travaille dans un projet distant en utilisant l'authentification par alias, clé ou mot de passe configurée dans ssh.md. À utiliser lorsque l'utilisateur demande de se connecter en SSH à un serveur, d'exécuter des commandes sur une machine distante, d'inspecter ou de modifier des fichiers sur un projet distant, ou de travailler sur un projet distant.

Qu'est-ce que remote-work-ssh ?

Cette compétence fournit un accès SSH sécurisé et structuré à des machines distantes pour le travail sur des projets. Elle lit la configuration depuis un fichier `ssh.md` dans le dossier du projet, prenant en charge l'authentification par alias, clé ou mot de passe. La compétence guide l'utilisateur à travers les étapes de localisation ou de création du fichier `ssh.md`, la validation de la configuration, la connexion, l'exécution de commandes dans un répertoire de projet distant, et l'application de règles de sécurité rigoureuses, telles que la vérification des clés hôtes et l'absence de fuite d'informations d'identification. Elle est conçue pour être utilisée avec des agents comme Claude Code, Cursor, etc., dans le cadre de workflows de développement à distance, en automatisant la configuration et l'exécution des commandes SSH tout en garantissant la sécurité et la fiabilité.

Compatible avec✓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 Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Travail à distance via SSH

Les détails de connexion se trouvent dans ssh.md dans le dossier du projet. Lisez-le avant chaque session à distance. Ne devinez jamais les hôtes, les utilisateurs, les ports, les chemins de clés ou les mots de passe.

Quand activer

  • L'utilisateur demande de se connecter, de se connecter ou d'exécuter quelque chose sur une machine distante
  • L'utilisateur demande d'inspecter, de modifier, de construire ou de tester un projet distant
  • L'utilisateur mentionne un serveur, un VPS ou un hôte distant et attend un accès SSH

Étape 1 : Localiser ssh.md

Le dossier du projet est git rev-parse --show-toplevel, ou le répertoire courant si cela échoue. ssh.md se trouve toujours dans <dossier_du_projet>/ssh.md.

S'il n'existe pas, créez-le à partir du modèle et dites à l'utilisateur de le remplir :

  1. Trouvez ssh.example.md. Il se trouve dans le dossier de cette compétence, qui dépend de l'agent. Vérifiez ces chemins dans l'ordre et utilisez le premier qui existe : .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 aucun n'existe, exécutez find ~ -path '*remote-work-ssh*' -name ssh.example.md 2>/dev/null | head -n 1.
  2. Copiez-le vers <dossier_du_projet>/ssh.md.
  3. Ajoutez ssh.md au .gitignore du projet s'il est manquant. Créez .gitignore si nécessaire.
  4. Arrêtez-vous et dites à l'utilisateur de remplir ssh.md.

Étape 2 : Valider la configuration

ssh.md contient un bloc YAML. Vérifiez ces champs :

  • auth doit être alias, key ou password.
  • remote_project_path doit être défini.
  • Les champs pour la méthode choisie doivent être définis :
authChamps requis
aliasalias
keyhost, user, identity_file (port par défaut à 22)
passwordhost, user, password_env (port par défaut à 22)

Si un champ requis est manquant ou si auth est inconnu, arrêtez-vous et signalez exactement quel champ est incorrect. Ne revenez pas à une autre méthode.

Étape 3 : Connexion

alias

Résolvez d'abord l'entrée, puis connectez-vous :

ssh -G <alias> | grep -E '^(hostname|user|port) '
ssh -o BatchMode=yes <alias> 'hostname && whoami'

clé

  • Confirmez que identity_file existe. Sinon, arrêtez-vous.
  • Utilisez uniquement cette clé :
ssh -o BatchMode=yes -o IdentitiesOnly=yes -i <identity_file> -p <port> <user>@<host> 'hostname && whoami'
  • Si proxy_jump est défini, ajoutez -J <proxy_jump>.

mot de passe

  • Vérifiez que sshpass est installé avec command -v sshpass. S'il est manquant, arrêtez-vous et dites à l'utilisateur de l'installer.
  • Vérifiez que la variable d'environnement nommée par password_env est définie, sans imprimer sa valeur.
  • Passez la valeur à sshpass via la variable d'environnement SSHPASS et -e. Ne mettez pas le mot de passe dans un argument de ligne de commande ou dans une sortie.
  • Désactivez les tentatives basées sur les clés afin que seul le mot de passe soit utilisé :
SSHPASS="$(printenv <password_env>)" sshpass -e ssh -o PubkeyAuthentication=no -o PreferredAuthentications=password -p <port> <user>@<host> 'hostname && whoami'
  • Si proxy_jump est défini, ajoutez -J <proxy_jump>.
  • N'utilisez pas BatchMode=yes ici, car cela désactive l'authentification par mot de passe.

Clés hôtes (toutes les méthodes)

  • Si la clé hôte est inconnue ou a changé, arrêtez-vous. Affichez l'empreinte et demandez à l'utilisateur de la vérifier.
  • Ne définissez jamais StrictHostKeyChecking=no ou des options similaires qui ignorent la vérification.

Étape 4 : Travailler dans le projet distant

  • Exécutez chaque commande à l'intérieur de remote_project_path, par exemple ssh ... 'cd <remote_project_path> && <command>'. Mettez le chemin entre guillemets.
  • Avant de supposer qu'un outil existe sur la machine distante, vérifiez ses manifestes ou exécutez command -v <tool>.
  • N'écrivez pas en dehors de remote_project_path sauf si l'utilisateur le demande.

Règles de sécurité

  • Demandez avant les commandes destructrices telles que rm -rf, les push forcés, la suppression de bases de données, les opérations sur disque ou les redémarrages de services.
  • Ne jamais imprimer, copier, enregistrer ou valider les mots de passe, le contenu des clés ou les jetons.
  • Ne stockez pas les informations d'identification dans un fichier autre que le ssh.md du projet ou l'environnement.
  • N'exécutez pas de commandes sur la machine distante que l'utilisateur n'a pas demandées.

Opérations non prises en charge

  • Stockage de mots de passe dans des fichiers suivis ou dans cette compétence
  • Gestion de MFA interactif ou de codes à usage unique pour le compte de l'utilisateur
  • Désactivation de la vérification de la clé hôte
  • Connexion à des hôtes qui ne sont pas définis dans ssh.md

Skills associés