Ajouter un serveur
Créer une fiche de connexion : protocole, authentification, bastion, réglages avancés, test, puis modification, duplication ou suppression.
Avant d'ouvrir le formulaire
Une fiche de connexion vit dans un coffre. Si l'application affiche l'écran de déverrouillage, ouvrez d'abord le vôtre : Ouvrir et verrouiller. Si vous n'en avez pas encore, commencez par Créer son coffre.
La vue Hôtes est l'écran d'accueil de Hawser : icône 🖥️ de la barre latérale gauche, titre « Connections » dans la barre du haut. Deux chemins mènent au formulaire :
- Le bouton « + Nouveau » (« + New » en anglais), en haut à droite de la barre.
- La palette ⌘K, puis l'entrée « New connection ».
Sur un coffre vide, la vue affiche « No hosts yet » et un bouton « + Add your first host » qui ouvre le même formulaire.

Choisir le protocole
À la création, une fenêtre « Choose a protocol » s'affiche avant le formulaire. Elle propose trois cartes. Échap, ou un clic hors de la fenêtre, annule. Une fois le choix fait, le titre du formulaire devient « New connection (SSH / SFTP) », « (FTP) » ou « (Telnet) ».
| Protocole | Ce que la fiche permet réellement | Port |
|---|---|---|
| SSH / SFTP | Terminal, navigateur de fichiers, exécution de commandes, tunnels, tableaux de bord Server / Docker / K8s. Une seule fiche donne les deux boutons « ⌨️ Shell » et « 📁 SFTP » sur la carte. | 22 |
| FTP | Navigateur de fichiers seul : navigation, envoi, téléchargement, création, renommage et suppression de dossier. Mode passif imposé. Pas de terminal. | 21 |
| Telnet | Terminal seul, en texte clair. Pas de transfert de fichiers, pas de snippets de démarrage. | 23 |
Le protocole reste modifiable ensuite, par les trois boutons radio en haut de l'onglet General. La fenêtre l'annonce : « You can change this later from the connection settings. »
Onglet General : les champs, dans l'ordre
Le formulaire s'ouvre sur cet onglet, curseur déjà placé dans Name.
| Champ | Ce qu'il attend |
|---|---|
| Name | Le libellé affiché sur la carte, dans la palette ⌘K et sur l'onglet de session. Obligatoire. |
| Port | Pré-rempli selon le protocole. Valeur entière entre 1 et 65535. |
| Host | Nom DNS ou adresse IP. Obligatoire. |
| User | Le compte distant. Masqué pour Telnet. En FTP, un champ laissé vide fait tenter une connexion anonymous. |
| Groupe | Champ libre, avec autocomplétion sur les groupes déjà utilisés dans le coffre. Laissé vide, la fiche atterrit en fin de liste sous l'en-tête « — Sans groupe — ». |
| Tags (séparés par virgule) | Affichés sur la carte et pris en compte par la recherche. |
| Path initial SFTP | Dossier d'ouverture du panneau distant. Visible pour SSH uniquement, valeur par défaut . |
Changer de protocole remet le port à la valeur par défaut seulement si le champ est vide ou s'il contient encore un port par défaut (22, 21 ou 23). Un port personnalisé est conservé : après un passage de SSH à FTP, vérifiez que le port affiché est bien celui de votre serveur FTP.
Les libellés de ce formulaire ne suivent pas la langue de l'interface : ils restent dans un mélange figé anglais / français (« Name », « Groupe », « Path initial SFTP »), même quand la barre latérale est en français.
Onglet Authentication : mot de passe ou clé
Pour un hôte SSH, un sélecteur à deux positions propose Password (position par défaut) ou Clé SSH. Pour un hôte FTP, l'onglet ne contient qu'un champ « Password FTP ». Pour un hôte Telnet, il est vide.
Mot de passe
Le mot de passe est saisi dans un champ masqué et enregistré chiffré dans le coffre .ivault, avec le reste de la fiche. Rien n'est écrit dans le trousseau macOS ni dans un fichier en clair : voir Ce qui est chiffré.
À la réouverture de la fiche, le champ a disparu au profit d'une pastille « 🔒 Password saved » et d'un bouton « Change ». Ce bouton ouvre une petite fenêtre « Change password » : New password, Confirm, un bouton « 🧪 Test », un bouton Apply. Deux saisies différentes donnent l'erreur « Les mots de passe diffèrent ». Après validation, la notification « Updated (unsaved) » rappelle que la modification n'est écrite dans le coffre qu'après Save sur la fiche.
Clé SSH
Le bouton « Clé SSH » remplace le champ mot de passe par la liste « Saved SSH key ». Cette liste ne contient que les clés déjà enregistrées dans le coffre ; celles qui ont été validées portent un « ✓ ». Le bouton « + New », à côté, ouvre la fenêtre de création de clé et re-sélectionne automatiquement la clé fraîchement créée.
La phrase de passe de la clé est stockée avec elle dans le coffre : elle n'est jamais redemandée à la connexion. Détails dans Gérer ses clés SSH.

Deux messages à connaître. « Select an SSH key » bloque l'enregistrement quand le mode Clé SSH est actif sans clé choisie. « Clé SSH introuvable (vérifie l'host : authType=key sans keyId valide) » apparaît plus tard, au lancement de la session, quand la clé référencée a été supprimée du coffre depuis.
Ce que l'onglet ne fait pas
Rebond par bastion (jump host)
Onglet Advanced, première liste : « Jump Host (bastion) », sur « — Direct connection — » par défaut. Elle ne propose que les autres hôtes SSH et SFTP du coffre, jamais la fiche en cours d'édition. Le bastion doit donc exister comme fiche à part entière, avec ses propres identifiants.
À la connexion, Hawser ouvre d'abord une session vers le bastion, y ouvre un canal direct-tcpip vers la cible, puis rejoue la poignée de main SSH complète à travers ce canal. L'empreinte du bastion est vérifiée comme celle de la cible. Un rebond actif se signale par un ⤴ sur la carte et sur la barre de l'onglet de session.
Les erreurs de rebond sont explicites et méritent d'être lues jusqu'au bout : « connect failed: jump host connect timeout » (le bastion ne répond pas), « connect failed: open direct-tcpip: … » (le bastion refuse d'ouvrir le canal, souvent parce que AllowTcpForwarding est désactivé côté serveur), « connect failed: target connect timeout » (le canal est ouvert mais la cible ne répond pas en SSH), « Jump host introuvable dans le store » (la fiche du bastion a été supprimée).
Onglet Advanced : délais, reconnexion, snippets
Le reste de cet onglet est inégal. Voici ce que chaque réglage fait vraiment, avec sa valeur par défaut.
| Réglage | Défaut | Effet réel |
|---|---|---|
| Keep-alive (ms) | 15000 | Aucun. La valeur est enregistrée et relue, mais n'est transmise à aucun moteur. |
| Ready timeout (ms) | 20000 | Partiel. Le délai appliqué à la connexion ne descend jamais sous 180 s, pour laisser à la fenêtre de validation d'empreinte le temps de s'afficher. Une valeur supérieure à 180000 ms est, elle, respectée. |
| Keep-alive max | 3 | Aucun. Enregistré, jamais utilisé. |
| Reconnexion automatique avec backoff | cochée | Actif. À la fermeture non voulue d'un shell SSH, la pastille passe à « Déconnecté » puis « Reconnexion dans Ns… ». Le délai double à chaque échec (1 s, 2 s, 4 s…) et plafonne à 20 s. Décochée, l'onglet reste simplement sur « Déconnecté ». |
| Snippets de démarrage | aucun | Actif. Les snippets cochés sont injectés dans le shell 500 ms après l'ouverture, dans l'ordre, après interpolation des variables de l'hôte. |
Jump host, les trois délais et la liste de snippets sont masqués pour FTP et Telnet. Les snippets de démarrage ne s'exécutent que sur une session shell SSH : ni l'onglet SFTP, ni Telnet ne les jouent. Voir Snippets et inspection.
Un hôte injoignable échoue de toute façon immédiatement, au niveau TCP, bien avant que le plancher de 180 s n'entre en jeu. Le moteur applique par ailleurs son propre délai d'inactivité de 600 s.
Tester, puis enregistrer
En bas du formulaire, à gauche de Cancel et Save, le bouton « 🧪 Test » ouvre une connexion TCP vers host:port avec un délai de 5 s, sans rien enregistrer. Le résultat s'affiche à côté : « ✓ OK » en vert, ou « ✗ » suivi de l'erreur système en rouge.
✗ timeout aucune réponse en 5 s
✗ Connection refused (os error 61) le port est fermé
✗ nodename nor servname provided, or not known nom d'hôte non résolu
Host required le champ Host est vide
Save valide la fiche, contrôle le quota cloud s'il s'agit d'une création sur un coffre appairé, puis écrit dans le coffre chiffré de façon synchrone : une erreur d'écriture est visible tout de suite et l'ajout est annulé en mémoire. Le bouton se verrouille pendant l'écriture. Confirmation : « Host added » ou « Host updated ».
- « Name and host required » — l'un des deux champs obligatoires est vide.
- « Port must be between 1 and 65535 » — port hors bornes.
- « Select an SSH key » — mode Clé SSH sans clé choisie.
- « no vault open » — le coffre s'est verrouillé entre-temps.
- Fenêtre « ⚠ Quota cloud atteint » — le coffre est appairé et l'ajout dépasserait la limite d'items du plan. Voir Synchroniser ses coffres.
Modifier, dupliquer, supprimer
Tout passe par le bouton « ⋯ » en haut à droite de la carte. Il n'existe aucun autre chemin. Le menu contient quatre entrées : « ✏️ Edit », « 📡 Test », « 📋 Duplicate », et « 🗑️ Delete » en rouge.
- Edit rouvre le formulaire sur la fiche, directement à l'onglet General. Le sélecteur de protocole ne réapparaît pas : le protocole se change par les trois radios.
- Duplicate crée immédiatement une copie complète, mot de passe et référence de clé compris, avec le suffixe « (copie) » dans le nom. Aucune fenêtre ne s'ouvre : la copie est enregistrée telle quelle, puis renommez-la par Edit. Confirmation « Dupliquée ».
- Delete demande confirmation (« Delete "<nom>" ? ») avant d'écrire. Si l'écriture dans le coffre échoue, la fiche est restaurée en mémoire et l'erreur affichée : rien ne disparaît en silence.
Les autres écarts connus de cette version sont recensés dans Limites et dépannage.