Commandes SSH
Laissez un agent lancer des commandes en SSH sur un serveur public, pendant que Sallyport garde la clé privée.
Sur cette page
L’agent envoie une commande. Sallyport se connecte avec votre clé ou votre mot de passe, l’exécute et renvoie la sortie. L’agent ne voit ni l’un ni l’autre.
Ajouter l’hôte
- Ouvrez Connecter un hôte SSH. Depuis Clés de service, c’est « Ajouter une clé de service », puis « Hôte SSH » dans « Source de la clé ».
- Saisissez un « Nom de la connexion ». Les agents le voient, et l’outil de l’hôte porte ce nom.
- Saisissez le « Nom d’hôte public ou adresse IP », le « Port SSH » et l’« Utilisateur SSH ». Le port est 22 sauf si vous le changez.
- Choisissez l’« Espace de travail » si vous en avez plusieurs, et l’« Environnement » : « Production » ou « Test ».
- Dans « Se connecter avec », gardez « Clé privée » et collez la « Clé privée OpenSSH ». Si la clé a une phrase de passe, saisissez-la dans « Phrase de passe de la clé (facultatif) ».
- Un serveur qui n’accepte pas de clé, comme un hébergement mutualisé, un routeur ou un appareil : choisissez « Mot de passe » et saisissez le « Mot de passe SSH ». Sallyport s’en sert pour répondre à la demande de mot de passe comme à la demande interactive du serveur.
- Appuyez sur « Enregistrer la connexion SSH ». La clé est en écriture seule, et personne ne peut la relire.
Sallyport vérifie l’adresse à l’enregistrement. Une adresse privée, ou une adresse qui pointe vers Sallyport lui-même, est refusée.
Vérifier l’identité du serveur
« Vérification de la clé d’hôte (facultatif) » propose deux choix.
| Choix | Ce qui se passe |
|---|---|
| Épingler la première clé après une authentification SSH réussie | Le choix par défaut. Sallyport enregistre l’empreinte de la clé du serveur à la première connexion réussie et refuse tout changement ensuite. |
| Exiger une empreinte que j’ai vérifiée | Collez l’empreinte SHA256: fournie par le propriétaire du serveur dans « Empreinte SHA-256 vérifiée de l’hôte ». Sallyport ne se connecte qu’à un serveur qui a cette clé. |
La page de la connexion affiche l’empreinte sous « Vérification de la clé d’hôte ». Si la clé du serveur change, les appels s’arrêtent avec host_key et aucune commande ne s’exécute.
Vérifiez d’abord la nouvelle clé avec le propriétaire du serveur. Ouvrez ensuite la page de la connexion, appuyez sur « Remplacer la clé épinglée » sous « Vérification de la clé d’hôte », collez la nouvelle empreinte SHA256: et appuyez sur « Épingler cette clé ». Les approbations données pour l’ancienne clé ne comptent plus. Un script fait de même avec une clé de console (API REST) : GET /v1/ssh-hosts liste vos hôtes avec leur id, et PATCH /v1/ssh-hosts/{id} avec known_host_key épingle la nouvelle clé.
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>"Choisir les commandes qui vous attendent
La nouvelle connexion va à chaque agent actif de son espace de travail et de son environnement. Par défaut, les commandes s’exécutent sans demander.
Pour approuver les commandes, ouvrez l’agent dans Agents, trouvez la connexion dans sa liste « Accès » et activez « Demander à chaque appel ». Ou réglez une classe à la fois :
- Lecture : des commandes de lecture simples d’une liste fixe, comme
ls,cat,tail,git status,docker psetkubectl get. - Destructive : des commandes comme
rm,dd,mkfs,kubectl deleteetdocker system prune. - Écriture : tout le reste. Un pipe,
;, une redirection,$, un joker,sudooush -cfont d’une commande une écriture, même si elle ne fait que lire.
La carte d’approbation montre l’hôte et la commande exacte. C’est cette commande, octet pour octet, qui s’exécute.
Lancer une commande
L’agent garde sa connexion MCP à Sallyport. list_access nomme l’outil de l’hôte, qui se termine par _exec. L’outil prend ces arguments :
| Argument | Signification |
|---|---|
cmd | La commande entière, telle que vous la taperiez dans un shell. Obligatoire. |
timeout_s | Arrête la commande après ce nombre de secondes. Une commande s’arrête de toute façon au bout de 5 minutes. |
intent | Une phrase sur le but, montrée à la personne qui approuve. |
call_id | Poursuit un appel qui attend une approbation. |
max_inline_bytes | Quelle part de la sortie arrive dans la réponse. 24 Kio par défaut. |
{
"cmd": "df -h",
"intent": "Check free disk space before the deploy"
}Dès que l’agent a un hôte SSH, il reçoit aussi ssh_exec. Cet outil prend les mêmes arguments, plus host. Un hôte hors de la liste de l’agent renvoie un lien où vous accordez l’accès.
Le même hôte donne aussi ses fichiers à l’agent : _sftp_read et _sftp_write les listent, les lisent, les écrivent, les renomment et les suppriment en SFTP, avec cette clé et cette clé d’hôte. Voir Fichiers en SFTP.
Lire le résultat
- La réponse contient
exit_code,stdoutetstderr. Une sortie qui n’est pas en UTF-8 arrive dansstdout_base64oustderr_base64. - Une sortie longue est coupée à
max_inline_bytes, etfetch_bodylit le reste. Une commande peut afficher jusqu’à 512 Mio. - Une commande n’a ni terminal ni entrée. Utilisez les options qui sautent les questions, comme
apt-get -y. - Ouvrez l’appel dans Activité pour voir « Résultat de la commande SSH » : la cible, « Code de sortie », « Empreinte de clé d’hôte » et la taille de la sortie.