VOOZH about

URL: https://glama.ai/mcp/servers/YawLabs/ssh-mcp?locale=de-DE

⇱ SSH MCP-Server by YawLabs | Glama


@yawlabs/ssh-mcp

👁 npm version
👁 License: MIT

Mache SSH fit für KI-Tools. Ein MCP-Server, der deine SSH-Umgebung verwaltet, Fehler diagnostiziert, sie behebt und deinem Agenten Fernzugriff auf alles ermöglicht.

Entwickelt und gepflegt von Yaw Labs.

Das Problem

KI-CLI-Tools laufen in Subprozessen, in denen SSH ständig fehlschlägt. Der Agent versucht git pull und erhält Permission denied (publickey). Er versucht, sich per SSH mit einem Server zu verbinden, und der Agent-Socket ist veraltet. Er versucht zu deployen, und der Host-Key hat sich geändert, weil die Instanz neu erstellt wurde. Jedes Mal weiß die KI nicht, was los ist, und gerät in eine Sackgasse.

Dies passiert in jeder Situation, die SSH-Keys erfordert:

  • Git — clone, pull, push, fetch, submodules, LFS

  • Paketmanagernpm install, pip install, go get, cargo, composer aus privaten Repos

  • Serverzugriff — SSH, SCP, SFTP, rsync

  • Tunneling — Port-Weiterleitung zu Datenbanken, SOCKS-Proxys

  • Deployment — Ansible, Terraform, Capistrano, Deploy-Skripte

  • Cloud — AWS EC2, GCP, Azure, DigitalOcean, jeder VPS

ssh-mcp behebt dies. Es verwaltet den SSH-Agenten, lädt Keys, diagnostiziert Fehler mit umsetzbaren Korrekturbefehlen und bietet Remote-Operationen an – alles als MCP-Tools, die dein KI-Agent aufrufen kann.

Schnellstart

npm install -g @yawlabs/ssh-mcp

Füge dies zu deiner MCP-Client-Konfiguration hinzu:

{
 "mcpServers": {
 "ssh": {
 "command": "ssh-mcp"
 }
 }
}

Tools

Verwaltung der SSH-Umgebung

Tools, die deine lokale SSH-Einrichtung reparieren, damit alles andere – Git, Deploys, Tunnel – nicht mehr abbricht.

Tool

Beschreibung

ssh_agent_ensure

Stellt sicher, dass ssh-agent läuft. Startet einen bei Bedarf und setzt Umgebungsvariablen für die Sitzung.

ssh_key_list

Listet alle SSH-Keys in ~/.ssh/ mit Typ, Fingerabdruck und Agent-Status auf.

ssh_key_load

Lädt einen Key in den laufenden Agenten. Stellt sicher, dass der Agent zuerst gestartet wird.

ssh_config_lookup

Löst die effektive SSH-Konfiguration für einen Host auf (Hostname, Benutzer, Port, Proxy, Identitätsdateien).

ssh_known_hosts_fix

Entfernt einen veralteten Host-Key und führt einen erneuten Scan durch. Behebt "host key verification failed"-Fehler.

ssh_git_check

Testet die Git-über-SSH-Authentifizierung bei GitHub, GitLab, Bitbucket usw.

ssh_test

Schneller Konnektivitätstest mit Zeitmessung und umsetzbaren Fehlerdetails.

Diagnosen

Tool

Beschreibung

ssh_diagnose

Vollständige SSH-Umgebungsdiagnose. Prüft Agent, Keys, Konfiguration, known_hosts und Konnektivität. Gibt exakte Korrekturbefehle für jeden Fehler zurück.

Remote-Operationen

Tool

Beschreibung

ssh_exec

Führt einen Befehl auf einem Remote-Host aus. Gibt stdout, stderr und Exit-Code zurück.

ssh_read_file

Liest eine Datei von einem Remote-Host via SFTP.

ssh_write_file

Schreibt Inhalt in eine Datei auf einem Remote-Host via SFTP.

ssh_upload

Lädt eine lokale Datei auf einen Remote-Host via SFTP hoch.

ssh_download

Lädt eine Datei von einem Remote-Host auf das lokale Dateisystem herunter.

ssh_ls

Listet Dateien in einem Verzeichnis auf einem Remote-Host auf.

Operationen auf höherer Ebene

Tools, die gängige Muster kapseln, die Agenten mit ssh_exec erstellen – schneller und weniger fehleranfällig.

Tool

Beschreibung

ssh_multi_exec

Führt einen Befehl parallel auf mehreren Hosts aus. Gibt Ergebnisse pro Host zurück.

ssh_find

Sucht remote nach Dateien mit strukturierten Parametern (Name, Typ, Größe, Tiefe).

ssh_tail

Liest die letzten N Zeilen einer Datei, optional gefiltert durch ein Grep-Muster.

ssh_service_status

Prüft den Status eines systemd-Dienstes (aktiv, PID, Uptime, Beschreibung).

Automatische Diagnosen

Wenn eine Remote-Operation fehlschlägt, führt ssh-mcp automatisch Diagnosen durch und fügt die Ergebnisse in die Fehlerantwort ein. Dein Agent muss ssh_diagnose nicht separat aufrufen – er erfährt direkt in der Fehlermeldung, was falsch ist und wie es behoben werden kann.

Verbindungs-Pooling

Remote-Operationen verwenden SSH-Verbindungen automatisch wieder. Wenn dein Agent mehrere Aufrufe an denselben Host tätigt, öffnet der erste Aufruf eine Verbindung und nachfolgende Aufrufe nutzen diese wieder. Verbindungen werden nach der letzten Nutzung 60 Sekunden lang offen gehalten und dann automatisch geschlossen.

Unterstützung für SSH-Konfiguration

Alle Verbindungen respektieren deine ~/.ssh/config. Host-Aliase, benutzerdefinierte Ports, Benutzernamen, Identitätsdateien und ProxyJump-Einstellungen werden automatisch verwendet. Wenn du Host myserver in deiner SSH-Konfiguration konfiguriert hast, übergib einfach host: "myserver" – ssh-mcp löst alles auf.

ProxyJump / Bastion-Hosts werden automatisch unterstützt. Wenn deine SSH-Konfiguration ProxyJump bastion für einen Host enthält, verbindet sich ssh-mcp transparent über den Bastion-Host. Verkettete Proxys funktionieren ebenfalls.

Host-Key-Verifizierung

Alle Remote-Operationen verifizieren den Host-Key des Servers gegen ~/.ssh/known_hosts:

  • Bekannter Host, Key stimmt überein — akzeptieren.

  • Bekannter Host, Key hat sich geändert — ablehnen (MITM-Schutz).

  • Unbekannter Host — bei der ersten Verbindung akzeptieren (TOFU). Verwende ssh_known_hosts_fix, um den Key für zukünftige Abweichungserkennungen zu fixieren.

Für strengere Umgebungen setze SSH_MCP_STRICT_HOST_KEY=1, um unbekannte Hosts abzulehnen. Füge sie zuerst explizit mit ssh_known_hosts_fix hinzu.

Die Diagnose-Tools (ssh_test, ssh_diagnose) verwenden StrictHostKeyChecking=no für ihre Testbefehle. Diese Tests führen nur echo SSH_OK aus – es werden keine Anmeldedaten oder Daten übertragen –, daher ist die gelockerte Einstellung für Konnektivitätstests sicher. Echte Operationen laufen immer über den hostVerifier.

Windows-Unterstützung

Unter Windows erkennt ssh-mcp den OpenSSH Authentication Agent-Dienst automatisch (über die Named Pipe \\.\pipe\openssh-ssh-agent). Es ist kein SSH_AUTH_SOCK erforderlich – stelle nur sicher, dass der OpenSSH-Agent-Dienst läuft.

Authentifizierung

Alle Remote-Operationen akzeptieren Verbindungsparameter:

Parameter

Beschreibung

Standard

host

SSH-Hostname oder IP (erforderlich)

port

SSH-Port

Aus SSH-Konfiguration oder 22

username

SSH-Benutzername

Aus SSH-Konfiguration oder aktueller Benutzer

privateKeyPath

Pfad zum privaten SSH-Key

Automatische Erkennung

password

SSH-Passwort (Keys bevorzugen)

Reihenfolge der Auth-Auflösung: ssh-mcp wählt die erste Übereinstimmung aus dieser Liste und geht nicht zu späteren Einträgen über – dies macht die Auth-Methode deterministisch und vorhersehbar.

  1. Expliziter privateKeyPath

  2. Explizites password

  3. ssh-agent (SSH_AUTH_SOCK unter Unix, \\.\pipe\openssh-ssh-agent unter Windows)

  4. Identitätsdateien aus ~/.ssh/config für den Host

  5. Standard-Key-Pfade (~/.ssh/id_ed25519, id_rsa, id_ecdsa)

Beispiel-Workflows

Agent kann kein Git-Pull durchführen

Agent calls ssh_git_check → "Permission denied. Your SSH key is not registered with github.com."
Agent calls ssh_key_list → finds id_ed25519 exists but is not loaded
Agent calls ssh_key_load("~/.ssh/id_ed25519") → "Key loaded"
Agent calls ssh_git_check → "Git SSH authentication to github.com succeeded as username"
Agent runs git pull → works

Host-Key nach Instanz-Neuerstellung geändert

Agent calls ssh_exec on server → error: "Host key verification failed"
 (auto-diagnostics included in error: "Fix with ssh_known_hosts_fix")
Agent calls ssh_known_hosts_fix("my-server") → "Host key refreshed"
Agent calls ssh_exec → works

Erstmalige Verbindung zu einem neuen Server

Agent calls ssh_test("new-server") → "Connection refused at new-server:22"
Agent calls ssh_diagnose("new-server") → full report showing agent running, keys loaded, but host unreachable
Agent reports: "SSH server isn't running on new-server or port 22 is blocked"

Programmatische Nutzung

import { connect, exec, diagnose, ensureAgent, listSshKeys, checkGitSsh, ConnectionPool } from '@yawlabs/ssh-mcp';

// Fix SSH environment
const agent = ensureAgent();
console.log(agent.message);

// Check git access
const git = checkGitSsh('github.com');
console.log(git.message);

// List available keys
const keys = listSshKeys();
for (const key of keys) {
 console.log(`${key.name} (${key.type}) - ${key.loadedInAgent ? 'loaded' : 'not loaded'}`);
}

// Run a remote command (one-off)
const client = await connect({ host: 'my-server', username: 'deploy' });
const result = await exec(client, 'uptime');
console.log(result.stdout);
client.end();

// Run multiple commands with connection pooling
const pool = new ConnectionPool();
await pool.withConnection({ host: 'my-server' }, async (client) => {
 const r1 = await exec(client, 'uptime');
 console.log(r1.stdout);
});
// Connection stays open for 60s — next call reuses it
await pool.withConnection({ host: 'my-server' }, async (client) => {
 const r2 = await exec(client, 'df -h');
 console.log(r2.stdout);
});
pool.drain(); // close all connections when done

// Diagnose issues
const report = diagnose('my-server');
console.log(report.overall); // "ok" | "warning" | "error"
for (const check of report.checks) {
 console.log(`[${check.status}] ${check.name}: ${check.message}`);
}

Anforderungen

  • Node.js 18+

  • SSH-Client installiert (für Diagnosen und Umgebungsverwaltung)

Lizenz

MIT

A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
<1hResponse time
3dRelease cycle
18Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/YawLabs/ssh-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server