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 :
- 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écutezfind ~ -path '*remote-work-ssh*' -name ssh.example.md 2>/dev/null | head -n 1. - Copiez-le vers
<dossier_du_projet>/ssh.md. - Ajoutez
ssh.mdau.gitignoredu projet s'il est manquant. Créez.gitignoresi nécessaire. - 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 :
authdoit êtrealias,keyoupassword.remote_project_pathdoit être défini.- Les champs pour la méthode choisie doivent être définis :
auth | Champs requis |
|---|---|
alias | alias |
key | host, user, identity_file (port par défaut à 22) |
password | host, 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_fileexiste. 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_jumpest défini, ajoutez-J <proxy_jump>.
mot de passe
- Vérifiez que
sshpassest installé aveccommand -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_envest définie, sans imprimer sa valeur. - Passez la valeur à
sshpassvia la variable d'environnementSSHPASSet-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_jumpest défini, ajoutez-J <proxy_jump>. - N'utilisez pas
BatchMode=yesici, 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=noou 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 exemplessh ... '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_pathsauf 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.mddu 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