Aller à la documentation
DocumentationCommandes SSH

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.

ChoixCe qui se passe
Épingler la première clé après une authentification SSH réussieLe 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éeCollez 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é.

Shell · trouver l’id de l’hôte, puis épingler 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 ps et kubectl get.
  • Destructive : des commandes comme rm, dd, mkfs, kubectl delete et docker system prune.
  • Écriture : tout le reste. Un pipe, ;, une redirection, $, un joker, sudo ou sh -c font 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 :

ArgumentSignification
cmdLa commande entière, telle que vous la taperiez dans un shell. Obligatoire.
timeout_sArrête la commande après ce nombre de secondes. Une commande s’arrête de toute façon au bout de 5 minutes.
intentUne phrase sur le but, montrée à la personne qui approuve.
call_idPoursuit un appel qui attend une approbation.
max_inline_bytesQuelle part de la sortie arrive dans la réponse. 24 Kio par défaut.
Arguments d’un appel à l’outil de l’hôte
{
  "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, stdout et stderr. Une sortie qui n’est pas en UTF-8 arrive dans stdout_base64 ou stderr_base64.
  • Une sortie longue est coupée à max_inline_bytes, et fetch_body lit 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.