SSH-Befehle
Lassen Sie einen Agenten Befehle per SSH auf einem öffentlichen Server ausführen, während Sallyport den privaten Schlüssel verwahrt.
Auf dieser Seite
Der Agent sendet einen Befehl. Sallyport meldet sich mit Ihrem Schlüssel oder Passwort an, führt ihn aus und gibt die Ausgabe zurück. Der Agent sieht keines von beiden.
Den Host hinzufügen
- Öffnen Sie SSH-Host verbinden. Von Schlüssel aus ist es „Schlüssel hinzufügen“, dann „SSH-Host“ unter „Quelle des Schlüssels“.
- Geben Sie einen „Name der Verbindung“ ein. Agenten sehen ihn, und das Werkzeug des Hosts trägt diesen Namen.
- Geben Sie „Öffentlicher Hostname oder IP-Adresse“, „SSH-Port“ und „SSH-Benutzer“ ein. Der Port ist 22, sofern Sie ihn nicht ändern.
- Wählen Sie den „Arbeitsbereich“, falls Sie mehrere haben, und die „Umgebung“: „Live“ oder „Test“.
- Lassen Sie unter „Anmelden mit“ „Privater Schlüssel“ gewählt und fügen Sie den „Privater OpenSSH-Schlüssel“ ein. Hat der Schlüssel eine Passphrase, tragen Sie sie in „Passphrase des Schlüssels (optional)“ ein.
- Ein Server, der keinen Schlüssel annimmt, etwa Shared Hosting, ein Router oder ein Gerät: Wählen Sie „Passwort“ und geben Sie das „SSH-Passwort“ ein. Sallyport beantwortet damit sowohl die Passwortabfrage als auch die interaktive Abfrage des Servers.
- Tippen Sie auf „SSH-Verbindung speichern“. Der Schlüssel ist nur schreibbar, niemand kann ihn wieder auslesen.
Sallyport prüft die Adresse beim Speichern. Eine private Adresse oder eine, die auf Sallyport selbst zeigt, wird abgewiesen.
Die Identität des Servers prüfen
„Prüfung des Host-Schlüssels (optional)“ bietet zwei Möglichkeiten.
| Möglichkeit | Was passiert |
|---|---|
| Ersten Schlüssel nach erfolgreicher SSH-Authentifizierung festhalten | Die Voreinstellung. Sallyport speichert den Fingerabdruck des Serverschlüssels bei der ersten erfolgreichen Anmeldung und weist jede spätere Änderung ab. |
| Einen von mir geprüften Fingerabdruck verlangen | Fügen Sie den SHA256:-Fingerabdruck vom Betreiber des Servers in „Geprüfter SHA-256-Fingerabdruck des Hosts“ ein. Sallyport verbindet sich nur mit einem Server mit diesem Schlüssel. |
Die Seite der Verbindung zeigt den Fingerabdruck unter „Prüfung des Host-Schlüssels“. Ändert sich der Schlüssel des Servers, stoppen Aufrufe mit host_key, und kein Befehl läuft.
Klären Sie den neuen Schlüssel zuerst mit dem Betreiber des Servers. Öffnen Sie dann die Seite der Verbindung, tippen Sie unter „Prüfung des Host-Schlüssels“ auf „Festgelegten Schlüssel ersetzen“, fügen Sie den neuen SHA256:-Fingerabdruck ein und tippen Sie auf „Diesen Schlüssel festlegen“. Freigaben für den alten Schlüssel gelten nicht mehr. Ein Skript tut dasselbe mit einem Konsolenschlüssel (REST API): GET /v1/ssh-hosts listet Ihre Hosts mit ihrer id, und PATCH /v1/ssh-hosts/{id} mit known_host_key hält den neuen Schlüssel fest.
export SP_CONSOLE_KEY='sp_ck_…'
curl --fail-with-body -H "Authorization: Bearer $SP_CONSOLE_KEY" \
https://mcp.sallyport.cloud/v1/ssh-hosts
curl --fail-with-body -X PATCH -H "Authorization: Bearer $SP_CONSOLE_KEY" \
-H 'Content-Type: application/json' \
-d '{"known_host_key": "SHA256:<new fingerprint>"}' \
"https://mcp.sallyport.cloud/v1/ssh-hosts/<host-id>"Festlegen, welche Befehle auf Sie warten
Die neue Verbindung geht an jeden aktiven Agenten ihres Arbeitsbereichs und ihrer Umgebung. Standardmäßig laufen Befehle ohne Rückfrage.
Um Befehle freizugeben, öffnen Sie den Agenten unter Agenten, suchen die Verbindung in seiner Liste „Zugriff“ und schalten „Bei jedem Aufruf fragen“ ein. Oder stellen Sie jede Klasse einzeln ein:
- Lesen: einfache Lesebefehle aus einer festen Liste, etwa
ls,cat,tail,git status,docker psundkubectl get. - Destruktiv: Befehle wie
rm,dd,mkfs,kubectl deleteunddocker system prune. - Schreiben: alles andere. Eine Pipe,
;, eine Umleitung,$, ein Platzhalter,sudoodersh -cmachen einen Befehl zum Schreibzugriff, auch wenn er nur liest.
Die Freigabekarte zeigt den Host und den genauen Befehl. Genau dieser Befehl läuft, Byte für Byte.
Einen Befehl ausführen
Der Agent behält seine MCP-Verbindung zu Sallyport. list_access nennt das Werkzeug des Hosts, das auf _exec endet. Das Werkzeug nimmt diese Argumente:
| Argument | Bedeutung |
|---|---|
cmd | Der ganze Befehl, so wie Sie ihn in einer Shell tippen würden. Pflicht. |
timeout_s | Stoppt den Befehl nach so vielen Sekunden. Ein Befehl endet in jedem Fall nach 5 Minuten. |
intent | Ein Satz zum Zweck, den die freigebende Person sieht. |
call_id | Setzt einen Aufruf fort, der auf Freigabe wartet. |
max_inline_bytes | Wie viel Ausgabe in der Antwort kommt. Standardmäßig 24 KiB. |
{
"cmd": "df -h",
"intent": "Check free disk space before the deploy"
}Sobald der Agent einen SSH-Host hat, erhält er auch ssh_exec. Es nimmt dieselben Argumente und zusätzlich host. Ein Host außerhalb der Liste des Agenten liefert einen Link, unter dem Sie Zugriff erteilen.
Derselbe Host gibt dem Agenten auch seine Dateien: _sftp_read und _sftp_write listen, lesen, schreiben, benennen um und löschen sie per SFTP, mit diesem Schlüssel und diesem Host-Schlüssel. Siehe Dateien per SFTP.
Das Ergebnis lesen
- Die Antwort enthält
exit_code,stdoutundstderr. Ausgabe, die kein UTF-8 ist, kommt alsstdout_base64oderstderr_base64. - Lange Ausgabe wird bei
max_inline_bytesabgeschnitten, undfetch_bodyliest den Rest. Ein Befehl darf bis zu 512 MiB ausgeben. - Ein Befehl erhält kein Terminal und keine Eingabe. Nutzen Sie Optionen, die Rückfragen überspringen, etwa
apt-get -y. - Öffnen Sie den Aufruf unter Aktivität, um „Ergebnis des SSH-Befehls“ zu sehen: das Ziel, „Exit-Code“, „Fingerabdruck des Host-Schlüssels“ und die Größe der Ausgabe.