CommunityCodierung & Entwicklunggithub.com

sabiviji/remote-work-ssh

Stelle eine SSH-Verbindung zu einem entfernten Rechner her und arbeite in einem Remote-Projekt – mit Authentifizierung per Alias, Schlüssel oder Passwort, konfiguriert in der ssh.md.

Was ist remote-work-ssh?

Dieses Skill ermöglicht es einem KI-Agenten, sich per SSH mit einem entfernten Server zu verbinden und dort in einem Projekt zu arbeiten. Es unterstützt drei Authentifizierungsmethoden: SSH-Alias, Schlüsseldatei oder Passwort (via sshpass). Die Verbindungsdetails werden in einer einzelnen `ssh.md`-Datei gespeichert, die der Benutzer vor der ersten Nutzung ausfüllen muss. Das Skill validiert die Konfiguration streng, verhindert unsichere Praktiken (wie das Deaktivieren der Host-Key-Prüfung) und führt alle Befehle innerhalb des konfigurierten Remote-Projektpfads aus. Es ist nützlich für Entwickler, die Remote-Server oder VPS über ihren KI-Assistenten verwalten, und funktioniert mit verschiedenen Agenten (Claude Code, Cursor, Codex), indem es die `ssh.md`-Vorlage aus dem entsprechenden Skill-Ordner lädt.

Funktioniert mit✓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 Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

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:

  1. 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ühre find ~ -path '*remote-work-ssh*' -name ssh.example.md 2>/dev/null | head -n 1 aus.
  2. Kopiere sie nach <Projektordner>/ssh.md.
  3. Füge ssh.md zur .gitignore des Projekts hinzu, falls sie fehlt. Erstelle .gitignore falls nötig.
  4. Halte an und teile dem Benutzer mit, dass er ssh.md ausfüllen soll.

Schritt 2: Konfiguration validieren

ssh.md enthält einen YAML-Block. Prüfe diese Felder:

  • auth muss alias, key oder password sein.
  • remote_project_path muss gesetzt sein.
  • Felder für die gewählte Methode müssen gesetzt sein:
authErforderliche Felder
aliasalias
keyhost, user, identity_file (port standardmäßig 22)
passwordhost, 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_file existiert. 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_jump gesetzt ist, füge -J <proxy_jump> hinzu.

password

  • Prüfe, ob sshpass mit command -v sshpass installiert ist. Wenn es fehlt, halte an und teile dem Benutzer mit, dass er es installieren soll.
  • Prüfe, ob die Umgebungsvariable, die durch password_env benannt ist, gesetzt ist, ohne ihren Wert auszugeben.
  • Übergib den Wert an sshpass über die Umgebungsvariable SSHPASS und -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_jump gesetzt 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=no oder ähnliche Optionen, die die Überprüfung überspringen.

Schritt 4: Im Remote-Projekt arbeiten

  • Führe jeden Befehl innerhalb von remote_project_path aus, 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.md des 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.md definiert sind

Verwandte Skills