Ouvrir une session SSH
Du bouton Shell à l'invite distante : vérification d'empreinte, rebond par bastion, délais, reconnexion et messages d'erreur exacts.
Du bouton Shell à l'invite
La vue Hôtes (icône 🖥️ du rail de gauche) est active au démarrage. Une fiche SSH y porte deux boutons : ⌨️ Shell et 📁 SFTP. Les deux ouvrent la même connexion — même hôte, même utilisateur, même authentification, même bastion. Vous n'avez pas de seconde fiche à créer pour transférer des fichiers.
- Vue Hôtes, repérez la carte du serveur. La ligne sous le nom affiche
utilisateur@hôte:port, suivie de⤴si un rebond est configuré. - Cliquez
⌨️ Shell. Hawser bascule sur la vue Sessions (icône 🗂️) et ouvre un onglet dans la zone 1. - Le terminal écrit en gris
Connecting to utilisateur@hôte:port...et la pastille de la barre d'onglet afficheConnecting…. - Au tout premier contact avec ce serveur, la connexion se suspend et la fenêtre d'empreinte s'affiche (section suivante).
- La pastille passe à
● Connectéen vert. L'invite du serveur apparaît.
Deuxième chemin : ⌘K, puis l'entrée préfixée HÔTE (sous-titre utilisateur@hôte), validée par Entrée. Effet identique au bouton principal de la carte.
Il n'y a pas de dédoublonnage : deux clics sur ⌨️ Shell ouvrent deux onglets et deux sessions SSH distinctes vers le même serveur.
Si des snippets de démarrage sont cochés dans l'onglet Advanced de la fiche, ils sont injectés dans le shell 500 ms après son ouverture, dans l'ordre, chacun suivi d'un retour ligne. Ils sont rejoués à chaque reconnexion. Voir Snippets et inspection.


Cette fois seulement ne l'enregistre pas : la question reviendra à la prochaine connexion.L'empreinte d'hôte au premier contact
Hawser tient sa propre liste d'empreintes de confiance, à l'intérieur du coffre chiffré. Il ne lit jamais le ~/.ssh/known_hosts de votre Mac, et n'y écrit rien. Un serveur déjà connu de votre ssh en ligne de commande sera donc traité ici comme un inconnu.
À la première connexion vers un hôte — que vous ayez cliqué ⌨️ Shell ou 📁 SFTP — la poignée de main est suspendue et cette fenêtre s'affiche :
Nouvelle empreinte d'hôte
C'est la première fois que tu te connectes à web01.example.com:22.
Vérifie l'empreinte auprès de l'admin avant de faire confiance.
SSH-ED25519
SHA256:kx9J2v…
[ Annuler ] [ Cette fois seulement ] [ Faire confiance ]
| Bouton | Effet |
|---|---|
Annuler | La connexion est abandonnée. Le terminal affiche [Erreur] Connexion SSH refusée : connect failed: Unknown server key. |
Cette fois seulement | La connexion se poursuit, rien n'est écrit dans le coffre. La question reviendra à la prochaine ouverture. |
Faire confiance | La connexion se poursuit et l'empreinte est enregistrée dans le coffre, avec son algorithme et la date. |
L'empreinte est calculée exactement comme ssh-keygen -lf côté serveur, ce qui autorise une comparaison caractère par caractère. Sur le serveur :
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
Sans réponse pendant 120 secondes, la fenêtre s'annule d'elle-même et la connexion est abandonnée. C'est pour lui laisser la place que le délai global de connexion ne descend jamais sous 180 secondes (voir plus bas).
Quand l'empreinte a changé

Si un hôte déjà connu présente une empreinte différente de celle enregistrée, le moteur refuse la connexion avant toute authentification, et affiche « ⚠ L'empreinte d'hôte a CHANGÉ ». Votre mot de passe n'a pas été envoyé.
La fenêtre donne les deux explications possibles : l'administrateur a régénéré la clé du serveur (légitime, mais rare), ou quelqu'un se fait passer pour ce serveur. Vous ne pouvez pas trancher depuis Hawser.
Lever le blocage après un changement légitime
Le texte de la fenêtre dit : « supprime l'ancienne empreinte depuis Réglages → Hôtes de confiance et reconnecte-toi. »
- Obtenez la nouvelle empreinte auprès de l'administrateur, par un canal indépendant du serveur concerné (téléphone, console physique, gestionnaire de configuration).
- Comparez-la avec la valeur affichée en rouge sous « présenté ». Si elles diffèrent, arrêtez-vous ici et signalez l'incident.
- Si elles correspondent : ouvrez la fiche de l'hôte (
⋯→✏️ Edit) et modifiez le champHostouPortpour désigner le même serveur autrement — son adresse IP au lieu de son nom de domaine, par exemple. Le couplehôte:portdevient inconnu du coffre. - Enregistrez, relancez
⌨️ Shell: la fenêtre « Nouvelle empreinte d'hôte » revient. Vérifiez l'empreinte affichée une dernière fois, puis « Faire confiance ».
L'ancienne entrée reste dans le coffre : elle rebloquera toute connexion faite sous l'ancien couple hôte:port. Le seul moyen de la supprimer réellement est de repartir d'un nouveau coffre. Voir Limites et dépannage.
Passer par un bastion (rebond)
Fiche de l'hôte → onglet Advanced → liste Jump Host (bastion), sur — Direct connection — par défaut. La liste ne propose que les autres hôtes SSH et SFTP du coffre — le bastion doit donc être enregistré comme une fiche à part entière, avec ses propres identifiants.
À la connexion, Hawser ouvre d'abord une session vers le bastion avec les identifiants de la fiche du bastion, y ouvre un canal direct-tcpip vers la cible, puis rejoue la poignée de main SSH complète à travers ce canal. Le bastion ne voit passer que du trafic chiffré de bout en bout : il ne déchiffre pas votre session.
- L'empreinte du bastion est vérifiée comme celle de la cible, avec la même fenêtre de confiance. Au premier rebond, vous répondez donc deux fois.
- Le chaînage est récursif : un bastion peut lui-même avoir un bastion, jusqu'à 4 niveaux.
- La carte de l'hôte et la barre de l'onglet affichent
⤴quand un rebond est actif.
Délais, coupures et reconnexion
Trois champs de l'onglet Advanced portent sur les délais. Un seul agit.
| Champ | Défaut | Effet réel |
|---|---|---|
Ready timeout (ms) | 20000 | Converti en secondes, puis plancher forcé à 180 s. Descendre sous 180000 ne change rien ; augmenter au-delà fonctionne. |
Keep-alive (ms) | 15000 | Enregistré dans le coffre, jamais transmis au moteur. Aucun effet. |
Keep-alive max | 3 | Enregistré dans le coffre, jamais transmis au moteur. Aucun effet. |
Le plancher de 180 s est délibéré : le délai enveloppe aussi l'attente de votre décision sur l'empreinte d'hôte, qui peut durer 120 s. Un hôte injoignable échoue quand même tout de suite, au niveau TCP, sans attendre 180 secondes.
Reconnexion automatique
La case Reconnexion automatique avec backoff de l'onglet Advanced est cochée par défaut. Quand le shell se ferme sans que vous l'ayez demandé, la pastille passe à Déconnecté, puis à Reconnexion dans Ns…, et une nouvelle tentative part après 1 s, puis 2 s, 4 s, 8 s, 16 s et 20 s au maximum. Le compteur revient à zéro dès qu'une connexion aboutit.
Si cette tentative échoue à l'étape de connexion, la pastille reste sur Erreur : Hawser ne réessaie plus tout seul. Le bouton 🔄 de la barre d'onglet relance la séquence complète.

Le coffre se verrouille pendant que vous travaillez
Le verrouillage automatique est réglé sur 15 minutes par défaut (vue 🔐 Séc. → ⏱️ Auto-lock). Les événements comptés comme activité sont la frappe, le mouvement de souris, le clic et le retour de focus sur la fenêtre.
Un encart jaune apparaît en bas à gauche sous les 60 dernières secondes, avec deux boutons : Rester repousse l'échéance, Verrouiller ferme le coffre immédiatement. Détail des mécanismes dans Ouvrir et verrouiller.
Diagnostic : les messages exacts
Les erreurs de session sont écrites en rouge dans le terminal, préfixées [Erreur], répétées dans une notification, et la pastille passe à Erreur.
| Message | Cause | Ce qu'il faut faire |
|---|---|---|
Connexion SSH refusée : authentication failed | Le serveur a rejeté le mot de passe ou la clé. | Vérifiez User dans l'onglet General et le secret dans l'onglet Authentication. Une clé doit aussi être autorisée côté serveur. |
Connexion SSH refusée : connect failed: Unknown server key | Vous avez répondu « Annuler » à la fenêtre d'empreinte, ou l'empreinte a changé — la fenêtre rouge s'affiche alors en même temps. | Relancez et répondez « Faire confiance » après vérification. Si c'est un changement d'empreinte, reprenez la marche à suivre plus haut. |
Connexion SSH refusée : connect failed: connect timeout | Pas de poignée de main SSH dans le délai (180 s au minimum). | Un pare-feu laisse souvent le TCP s'ouvrir puis coupe. Comparez avec le bouton 🧪 Test de la fiche. |
Connexion SSH refusée : connect failed: … | Refus TCP ou nom d'hôte non résolu (par exemple Connection refused (os error 61)). | Vérifiez Host et Port. |
Clé SSH introuvable (vérifie l'host : authType=key sans keyId valide) | La fiche est en mode clé, mais la clé référencée n'est plus dans le coffre. | Fiche → onglet Authentication → resélectionnez une clé dans Saved SSH key. |
Jump host introuvable dans le store | Le bastion référencé par la fiche a été supprimé du coffre. | Fiche → onglet Advanced → Jump Host (bastion). |
jump host chain too deep (limit 4) | Plus de quatre rebonds en cascade. | Raccourcissez la chaîne de bastions. |
Connexion SSH refusée : connect failed: jump host: … ou jump host connect timeout | Le bastion lui-même ne répond pas ou refuse l'authentification. | Ouvrez d'abord une session sur le bastion seul, pour isoler le problème. |
Connexion SSH refusée : connect failed: open direct-tcpip: … | Le bastion refuse d'ouvrir le canal vers la cible. | Côté bastion, c'est presque toujours AllowTcpForwarding no dans sshd_config. |
Connexion SSH refusée : connect failed: target connect timeout ou target: … | Le canal est ouvert, mais la cible ne répond pas en SSH depuis le bastion. | Vérifiez depuis le bastion que la cible est joignable sur son port. |
Ouverture du shell refusée : … | La session est authentifiée mais le serveur refuse d'allouer un terminal. | Compte sans shell, ForceCommand, ou quota de sessions atteint côté serveur. |
Tauri natif indisponible (recharge l'app) | Le pont natif n'était pas encore chargé au moment du clic. | Relancez Hawser. |
[shell exited with code N] (en gris) | Ce n'est pas une erreur : le shell distant s'est terminé normalement, après un exit par exemple. | 🔄 pour rouvrir un shell. |
Les outils de test, et ce qu'ils prouvent
🧪 Test au pied de la fiche et 📡 Test all dans la barre de filtres ouvrent une connexion TCP vers hôte:port — 5 secondes de délai pour le premier, 3 pour le second. Ils ne vérifient ni l'authentification, ni la clé, ni l'empreinte. Un ✓ OK suivi d'un authentication failed est parfaitement cohérent.
Ce que cette version ne fait pas
- Gérer les empreintes de confiance. Pas d'écran pour les lister, en oublier une, ou importer un
~/.ssh/known_hosts. La liste se construit hôte par hôte, au premier contact, et ne se nettoie pas. - Rediriger l'agent SSH, ni s'authentifier par l'agent macOS depuis l'interface.
- Régler le keep-alive, ni le délai d'inactivité de 10 minutes.
- Rouvrir les onglets au lancement suivant : seule la disposition de la grille est restaurée.
- Rechercher dans l'historique du terminal :
⌘Fn'est lié à rien, malgré ce qu'annonce l'aide intégrée. - Changer la police, la taille ou le thème du terminal : ces valeurs sont figées.
Pour la suite : Travailler dans le terminal, Transférer des fichiers, Tunnels et ports.