bambouville

Hôtes et connexions

L'éditeur d'hôtes

Appuyez sur ⌘N pour un nouvel hôte, ou touchez un hôte existant pour le modifier. L'éditeur comporte quatre onglets — connexion, avancé, redirection, extraits — et une barre se connecter. Sur iPhone, ces quatre mêmes sections apparaissent sous forme de pastilles — connexion, avancé, tunnels, extraits — où les champs de connexion et les règles de tunnel sont mis en attente jusqu'à ce que vous touchiez enregistrer (les autres modifications s'appliquent immédiatement, comme sur iPad) ; l'éditeur est identique sur les deux appareils.

L'onglet connexion contient l'essentiel : nom, adresse, port (1–65535), utilisateur, identité (une clé de votre page clés) et mot de passe. Un mot de passe saisi ici a la portée de la session : il n'est conservé que pour la session en cours et jamais enregistré. Seule exception : un hôte configuré via la configuration à proximité ou la continuité qui s'authentifie par mot de passe — le mot de passe saisi une fois sur le nouvel appareil est conservé comme identifiant enregistré dans le trousseau de cet appareil, jamais synchronisé, et l'éditeur peut le modifier plus tard (l'enregistrement remplace le mot de passe stocké).

L'éditeur d'hôtes avec ses quatre onglets — connexion, avancé, redirection, extraits — les champs de connexion et la barre se connecter.
Quatre onglets en haut, et une barre se connecter épinglée en bas de chaque onglet.

Transport : SSH ou Mosh

Chaque hôte choisit un transport :

  • ssh — une seule connexion SSH ; les onglets tmux restent sur la session principale.
  • mosh — un terminal mosh sur UDP. Mosh garde votre session en vie lors des bascules Wi-Fi ↔ cellulaire et des veilles/réveils, et paraît plus vif sur les liaisons avec pertes. Il exige mosh-server installé sur l'hôte. Les onglets tmux passent par un second canal SSH secondaire. La page mosh raconte tout, y compris le véritable historique.

Le trafic UDP de mosh ne peut pas traverser les bastions : si vous utilisez mosh à travers un hôte de rebond et que le serveur mosh est injoignable, Tessera vous le dit (« mosh est injoignable via la chaîne de rebonds… ») et se reconnecte en SSH.

Modes de lancement

  • tmux automatique — s'attache à (ou crée) une session tmux propre à l'hôte, avec un nom déterministe tessera-XXXXXXXX mémorisé d'une réinstallation de l'app à l'autre. C'est le mode par défaut, celui qui rend les coupures de connexion inoffensives.
  • tmux nommé — s'attache à un nom de session tmux que vous choisissez ; les noms comportant des caractères invalides retombent sur le nom dérivé automatiquement.
  • personnalisé — une commande de lancement littérale. En ssh, elle est envoyée au shell de connexion ; en mosh, elle est exécutée par mosh-server new -- <command>.

Voir tmux pour ce qu'apportent les modes tmux, et redirection de ports pour l'interaction entre le mode de lancement et les tunnels.

Hôtes de rebond

N'importe quel hôte enregistré peut servir de bastion SSH (ProxyJump) : choisissez-le dans l'éditeur d'hôtes. Les chaînes s'imbriquent — l'hôte de rebond de l'hôte de rebond prolonge la chaîne — et l'éditeur affiche le chemin obtenu (« a → b → hôte »), avec des avertissements pour les chaînes rompues.

  • Chaque saut s'authentifie indépendamment avec sa propre identité ou son propre mot de passe. Les sauts par mot de passe reçoivent un champ mot de passe · <nom du saut> dans la section hôte de rebond de l'éditeur, conservé uniquement pour la session en cours ; se connecter reste désactivé tant que chaque saut n'en a pas un.
  • Les demandes de clé d'hôte apparaissent saut par saut, le bastion d'abord, chacune nommant le point de terminaison vérifié.
  • Une chaîne rompue échoue sans repli : si un hôte de rebond a été supprimé, l'hôte qui en dépend l'indique dans son éditeur et la connexion échoue plutôt que de passer silencieusement en direct. Les erreurs nomment le saut d'où elles viennent (« hôte de rebond <nom> : … »).
  • Dans la version gratuite, un bastion enregistré séparément occupe son propre emplacement d'hôte enregistré.

Onglet avancé

  • logo de l'OS — détecté automatiquement à la connexion, ou défini à la main (macos, ubuntu, debian, alpine, linux, raspbian).
  • étiquettes et notes — pour votre propre organisation.
  • variables d'environnement — un KEY=value par ligne ; un export initial facultatif est retiré. Les valeurs sont transmises telles quelles au shell distant — $HOME, $(…) et les guillemets fonctionnent tels qu'écrits.
  • arrière-plan du terminal — un remplacement par hôte de l'arrière-plan global.

Les variables d'environnement et les extraits de démarrage ne s'exécutent qu'au démarrage de la session tmux. Si vous les modifiez pour un hôte dont la session tmux existe déjà, fermez cette session sur le serveur pour prendre en compte les changements.

Extraits

L'onglet extraits contient un extrait de démarrage : des commandes envoyées immédiatement après la connexion (la même réserve tmux ci-dessus s'applique).

Quand une connexion s'enlise

Pendant qu'une session s'établit, la surcouche de lancement nomme l'étape en cours — connexion, puis pour les hôtes tmux démarrage de tmux (SSH) ou attachement de tmux (mosh), puis attachement du volet. Si une étape n'avance plus pendant une douzaine de secondes, la surcouche indique laquelle bloque (« toujours connexion — le handshake n'est pas terminé. ») et propose une sortie plutôt que de tourner dans le vide :

  • modifier l'hôte — ouvre l'éditeur d'hôtes, quand le problème vient de l'adresse, du port ou de la clé,
  • réessayer — démonte la tentative et reconnecte de zéro,
  • retour — abandonne et revient à vos hôtes. Sortir d'une tentative enlisée la déconnecte entièrement — rien ne reste en cours d'exécution sur le serveur.

Le minuteur vaut par étape : une connexion lente mais qui progresse ne le déclenche jamais. Si tmux lui-même ne peut pas démarrer — il n'est pas installé, la session ne peut pas s'ouvrir, ou les dotfiles de l'hôte lancent déjà tmux à la connexion — Tessera vous dépose dans un shell simple avec une bannière disant exactement ce qui s'est passé, plutôt que d'attendre un tmux qui ne répondra jamais.

La surcouche de lancement enlisée pendant la connexion : la légende d'étape indique connexion avec le nom de la session tmux en dessous, une ligne d'avertissement indique toujours connexion — le handshake n'est pas terminé., et les boutons modifier l'hôte, réessayer et retour attendent en dessous.
Douze secondes sans progression : la surcouche nomme l'étape en cours et propose une sortie.

Sessions

Tessera garde ouvertes plusieurs sessions simultanées vers n'importe quels hôtes. Les hôtes en tmux automatique sont uniques — une session de contrôle tmux par hôte (par hôte et par nom de session pour tmux nommé) — tandis que les hôtes à commande personnalisée peuvent en avoir plusieurs (« nom #2 », « nom #3 »). La section actif de la barre latérale liste toutes les sessions, étiquetées « nom (tmux) », « nom (tmux : nom-de-session) » ou « nom #N », chacune avec un bouton de déconnexion. Sur iPhone, cette même liste est l'onglet sessions.

Passez d'une session à l'autre en les touchant, en parcourant les voisines avec ⌘⇧K / ⌘⇧J, ou en ouvrant la palette de bascule rapide ⌘K : saisissez du texte pour filtrer les sessions (les plus récentes d'abord) et les agents — préfixez la requête par @ pour la limiter aux agents.

Restauration de session

réglages → terminal → démarrage → connexions précédentes contrôle ce qui se passe à un nouveau lancement :

  • demander — affiche une feuille « rouvrir les connexions précédentes » avec « toujours rouvrir » / « rouvrir » / « pas maintenant ».
  • toujours — reconnecte sans rien demander.
  • jamais — démarre à vide.

Sur iPhone, la feuille de choix est remplacée par un simple interrupteur restaurer au lancement. Seules les sessions d'hôtes enregistrés dont le matériel de clé est intact sont restaurables.

Le retour au premier plan fonctionne de la même façon, en plus fin : Tessera attend que toutes les sessions ouvertes signalent leur état avant de décider quoi reconnecter, de sorte que si plusieurs hôtes tombent en même temps — ou qu'une session mosh n'admet que tardivement sa mort — chacune est reconnectée, aucune laissée en plan. Pendant ce temps, la surcouche de lancement compte les autres (« +2 autres sessions en reconnexion »). Tessera est délibérément monofenêtre (pas de multi-scène sur iPad) ; la barre latérale et la palette — la barre d'onglets et le sélecteur sur iPhone — sont vos moyens de déplacement.