Remote-Arbeit über SSH
Die Verbindungsdetails befinden sich in der ssh.md im Projektordner. Lies sie vor jeder Remote-Sitzung aus. Errate niemals Hosts, Benutzer, Ports, Schlüsselpfade oder Passwörter.
Wann das Skill aktiviert wird
- Der Benutzer bittet darum, sich mit einem entfernten Rechner zu verbinden, sich dort anzumelden oder etwas darauf auszuführen.
- Der Benutzer bittet darum, ein entferntes Projekt zu inspizieren, zu bearbeiten, zu bauen oder zu testen.
- Der Benutzer erwähnt einen Server, VPS oder Remote-Host und erwartet SSH-Zugriff.
Schritt 1: ssh.md finden
Der Projektordner wird mit git rev-parse --show-toplevel ermittelt, falls das fehlschlägt, ist das aktuelle Verzeichnis der Projektordner. ssh.md befindet sich immer unter <Projektordner>/ssh.md.
Wenn sie nicht existiert, erstelle sie aus der Vorlage und teile dem Benutzer mit, dass er sie ausfüllen soll:
- Finde
ssh.example.md. Sie liegt im Ordner dieses Skills, der vom Agenten abhängt. Prüfe diese Pfade in der angegebenen Reihenfolge und verwende den ersten, der existiert:.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/. Wenn keiner existiert, führefind ~ -path '*remote-work-ssh*' -name ssh.example.md 2>/dev/null | head -n 1aus. - Kopiere sie nach
<Projektordner>/ssh.md. - Füge
ssh.mdzur.gitignoredes Projekts hinzu, falls sie fehlt. Erstelle.gitignorefalls nötig. - Halte an und teile dem Benutzer mit, dass er
ssh.mdausfüllen soll.
Schritt 2: Konfiguration validieren
ssh.md enthält einen YAML-Block. Prüfe diese Felder:
authmussalias,keyoderpasswordsein.remote_project_pathmuss gesetzt sein.- Felder für die gewählte Methode müssen gesetzt sein:
auth | Erforderliche Felder |
|---|---|
alias | alias |
key | host, user, identity_file (port standardmäßig 22) |
password | host, user, password_env (port standardmäßig 22) |
Wenn ein erforderliches Feld fehlt oder auth unbekannt ist, halte an und melde genau, welches Feld falsch ist. Falle nicht auf eine andere Methode zurück.
Schritt 3: Verbinden
alias
Löse den Eintrag zuerst auf, dann verbinde:
ssh -G <alias> | grep -E '^(hostname|user|port) '
ssh -o BatchMode=yes <alias> 'hostname && whoami'
key
- Bestätige, dass
identity_fileexistiert. Wenn nicht, halte an. - Verwende nur diesen Schlüssel:
ssh -o BatchMode=yes -o IdentitiesOnly=yes -i <identity_file> -p <port> <user>@<host> 'hostname && whoami'
- Wenn
proxy_jumpgesetzt ist, füge-J <proxy_jump>hinzu.
password
- Prüfe, ob
sshpassmitcommand -v sshpassinstalliert ist. Wenn es fehlt, halte an und teile dem Benutzer mit, dass er es installieren soll. - Prüfe, ob die Umgebungsvariable, die durch
password_envbenannt ist, gesetzt ist, ohne ihren Wert auszugeben. - Übergib den Wert an
sshpassüber die UmgebungsvariableSSHPASSund-e. Setze das Passwort nicht in ein Kommandozeilenargument oder in eine Ausgabe. - Deaktiviere schlüsselbasierte Versuche, sodass nur das Passwort verwendet wird:
SSHPASS="$(printenv <password_env>)" sshpass -e ssh -o PubkeyAuthentication=no -o PreferredAuthentications=password -p <port> <user>@<host> 'hostname && whoami'
- Wenn
proxy_jumpgesetzt ist, füge-J <proxy_jump>hinzu. - Verwende hier nicht
BatchMode=yes, da es die Passwortauthentifizierung deaktiviert.
Host-Schlüssel (alle Methoden)
- Wenn der Host-Schlüssel unbekannt oder geändert ist, halte an. Zeige den Fingerabdruck und bitte den Benutzer, ihn zu überprüfen.
- Setze niemals
StrictHostKeyChecking=nooder ähnliche Optionen, die die Überprüfung überspringen.
Schritt 4: Im Remote-Projekt arbeiten
- Führe jeden Befehl innerhalb von
remote_project_pathaus, z. B.ssh ... 'cd <remote_project_path> && <command>'. Setze den Pfad in Anführungszeichen. - Bevor du annimmst, dass ein Tool auf dem entfernten Rechner existiert, überprüfe seine Manifeste oder führe
command -v <tool>aus. - Schreibe nicht außerhalb von
remote_project_path, es sei denn, der Benutzer verlangt es.
Sicherheitsregeln
- Frage vor destruktiven Befehlen wie
rm -rf, Force-Pushes, Datenbanklöschungen, Festplattenoperationen oder Dienstneustarts. - Gib niemals Passwörter, Schlüsselinhalte oder Token aus, kopiere, protokolliere oder committe sie.
- Speichere keine Anmeldeinformationen in einer anderen Datei als der
ssh.mddes Projekts oder der Umgebung. - Führe keine Befehle auf dem entfernten Rechner aus, die der Benutzer nicht verlangt hat.
Nicht unterstützte Operationen
- Speichern von Passwörtern in nachverfolgten Dateien oder in diesem Skill
- Handhabung von interaktivem MFA oder Einmalcodes im Namen des Benutzers
- Deaktivieren der Host-Schlüsselüberprüfung
- Verbinden zu Hosts, die nicht in
ssh.mddefiniert sind