⚙⚙⚙

// AJOUTER UN HÔTE

Appuyez sur le bouton + dans l'écran des hôtes pour ajouter un nouveau serveur (sur iOS, il ouvre un petit menu : choisissez Ajouter un hôte).

Champs obligatoires

  • Hostname / IP — l'adresse ou l'IP du serveur. IPv4 et IPv6 sont tous deux pris en charge.
  • Port — par défaut 22. Modifiez-le si votre serveur utilise un port SSH différent.
  • Nom d'utilisateur — l'utilisateur Unix avec lequel vous souhaitez vous connecter (ex. ubuntu, root, deploy).
  • Authentification — choisissez entre mot de passe ou clé SSH (recommandé).

Vérification de l'empreinte de l'hôte

Lors de la première connexion, SSHBorg affiche l'empreinte du serveur et vous demande de l'accepter. C'est une vérification de sécurité : elle garantit que vous vous connectez à la bonne machine et non à un imposteur. Vérifiez que l'empreinte correspond à celle fournie par votre administrateur avant d'accepter.

Une fois acceptée, l'empreinte est stockée localement. Si elle change lors d'une connexion future, SSHBorg vous avertira — cela pourrait indiquer une reconstruction du serveur, une rotation des clés ou une attaque man-in-the-middle.

// ASTUCE
Vous pouvez vérifier l'empreinte du serveur à tout moment avec :
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

// GROUPES D'HÔTES

Quand la liste de serveurs s'allonge, vous pouvez organiser les hôtes en groupes repliables à code couleur — par exemple Production, Labo maison, Clients.

Créer un groupe

  1. Ajoutez ou modifiez un hôte et ouvrez le menu déroulant Groupe.
  2. Choisissez Nouveau groupe…, saisissez un nom et sélectionnez l'une des couleurs prédéfinies.
  3. Enregistrez l'hôte — la liste des hôtes affiche désormais le groupe comme une section à part.

Sur iOS, un groupe peut aussi être créé seul, depuis le bouton + → Nouveau groupe.

Utiliser les groupes

  • Replier / déplier — touchez l'en-tête d'un groupe pour le replier ou le rouvrir. L'état est mémorisé, même après un redémarrage de l'appli.
  • Couleur — la couleur du groupe apparaît comme un point dans l'en-tête et comme teinte des icônes des hôtes du groupe.
  • Modifier — appuyez longuement sur l'en-tête et choisissez Modifier pour renommer le groupe ou changer sa couleur.
  • Supprimer — appuyez longuement sur l'en-tête et choisissez Supprimer. Les hôtes du groupe ne sont pas supprimés : ils redeviennent simplement sans groupe.

Les couleurs se choisissent parmi les pastilles rapides ou, sur Android, librement avec le sélecteur à dégradé — sur iOS, le choix se fait parmi les pastilles. Un hôte peut aussi avoir sa propre couleur — définie dans l'éditeur d'hôte, juste sous le groupe — qui prime sur la couleur du groupe et fonctionne aussi pour les hôtes sans groupe.

Les hôtes sans groupe restent en haut de la liste et, si vous ne créez aucun groupe, la liste garde exactement l'aspect et le comportement d'avant.

Ordre de la liste

Choisissez la disposition de la liste dans Paramètres → Ordre de la liste des hôtes :

  • Alphabétique (par défaut) — groupes par nom, hôtes par libellé dans chacun.
  • Utilisés récemment — l'hôte auquel vous vous êtes connecté en dernier passe en tête ; ceux jamais utilisés restent en bas.
  • Les plus utilisés — d'abord les hôtes ayant le plus de connexions.
  • Manuel — l'ordre que vous définissez vous-même.

Dans les trois premiers modes les groupes restent alphabétiques : les en-têtes de section ne bougent jamais et seuls les hôtes qu'ils contiennent sont réorganisés. En ordre manuel, les groupes se déplacent aussi.

Pour réorganiser, choisissez Manuel, puis ouvrez le menu d'un hôte ou d'un en-tête de groupe — le bouton ⋮ (… sur iOS), un appui long, ou la touche Menu de la télécommande sur Android TV — et utilisez Monter / Descendre. Un hôte ne se déplace qu'à l'intérieur de sa propre section : pour le placer dans un autre groupe, changez le groupe dans l'éditeur d'hôte. Le passage en manuel conserve exactement l'ordre affiché à cet instant, rien ne saute donc, et les hôtes ajoutés ensuite vont à la fin de leur section.

// GESTIONNAIRE DE FICHIERS SFTP

Le gestionnaire de fichiers SFTP vous permet de parcourir, envoyer, télécharger, renommer et supprimer des fichiers sur votre serveur directement depuis votre téléphone. Ouvrez-le depuis l'écran des hôtes avec Fichiers dans le menu d'un hôte.

Navigation

Appuyez sur un dossier pour l'ouvrir. Utilisez la flèche de retour ou appuyez sur un segment de la barre de chemin pour remonter dans l'arborescence. Un appui sur un fichier ouvre ce que vous pouvez en faire : télécharger, ouvrir dans l'éditeur, renommer, supprimer.

Les liens symboliques sont affichés avec un petit badge en forme de chaîne. Appuyer sur un lien symbolique navigue vers sa cible : s'il pointe vers un répertoire, vous y entrez ; s'il pointe vers un fichier, il se comporte comme un fichier normal.

Envoyer des fichiers

Appuyez sur le bouton d'envoi (↑) pour sélectionner un ou plusieurs fichiers depuis le stockage de votre téléphone. L'envoi commence immédiatement et la progression est affichée en haut de l'écran.

Télécharger des fichiers et des dossiers

Appuyez sur l'icône de téléchargement à droite de la ligne d'un fichier pour le télécharger immédiatement. Pour télécharger un dossier entier, appuyez sur l'icône de téléchargement à côté — SSHBorg télécharge toute l'arborescence et la sauvegarde dans le dossier Téléchargements de votre téléphone.

Si un fichier existe déjà à la destination, une boîte de dialogue vous demandera si vous souhaitez écraser, ignorer le fichier ou annuler tout le transfert.

// NOTE SUR LES LIENS SYMBOLIQUES
Lors du téléchargement d'un dossier, les liens symboliques pointant vers des répertoires sont ignorés — seuls les fichiers normaux (y compris les liens vers des fichiers) sont téléchargés. Cela évite les téléchargements récursifs non souhaités.

Sélection multiple et opérations groupées

Appuyez sur Sélectionner des éléments dans la barre d'outils pour activer le mode de sélection, puis cochez les éléments voulus. La barre d'outils affiche les actions disponibles :

  • Télécharger — télécharge tous les fichiers et dossiers sélectionnés en une seule fois, avec une boîte de dialogue de progression et la possibilité d'annuler.
  • Supprimer — supprime tous les éléments sélectionnés. La suppression d'un dossier non vide efface tout son contenu de manière récursive. Cette action est irréversible.

Déplacer des fichiers sur le serveur

Choisissez Couper dans le menu d'un fichier ou d'un dossier — ou plusieurs à la fois avec Sélectionner des éléments — puis ouvrez le dossier de destination et appuyez sur Coller dans la barre apparue au-dessus de la liste. Le déplacement est fait par le serveur : rien n'est téléchargé ni envoyé, donc un fichier de n'importe quelle taille se déplace instantanément.

Si ce nom est déjà pris dans la destination, SSHBorg demande avant de toucher à quoi que ce soit. Un fichier peut être remplacé ou conservé à côté de l'existant ; deux dossiers de même nom ne peuvent que coexister, car aucun serveur SFTP ne sait fusionner des dossiers — mv refuse également. Le déplacement entre deux disques différents du serveur est aussi refusé : un déplacement est un renommage, et un renommage ne traverse pas les systèmes de fichiers. Il faudrait une copie, que SSHBorg ne fait pas encore.

Modifier les fichiers

Appuyez sur un fichier pour ouvrir son menu et choisissez Ouvrir dans l'éditeur pour le modifier directement sur le serveur. Rien n'est conservé sur le téléphone : le fichier est lu en mémoire, modifié, puis réécrit sur le serveur.

Le fichier repart tel qu'il est arrivé. Son encodage est détecté et réutilisé à l'enregistrement, les fins de ligne LF ou CRLF sont préservées, un fichier qui se terminait sans retour à la ligne le reste, et les droits ne changent pas. Si l'encodage a été mal lu, touchez-le dans la barre en bas de l'éditeur et choisissez-en un autre — la liste ne propose que des encodages capables de reproduire exactement les octets de ce fichier : un mauvais choix peut s'afficher de travers, il ne peut pas abîmer le fichier.

L'enregistrement écrit un fichier temporaire à côté de l'original puis le renomme à sa place, de sorte qu'une connexion perdue en cours de route ne laisse jamais un fichier à moitié écrit sur le serveur.

Les fichiers s'ouvrent jusqu'à 4 Mo, quelle que soit leur longueur : seules les lignes à l'écran sont dessinées, donc un fichier de plusieurs mégaoctets défile comme un court. Au-delà, la réponse est le terminal, avec nano ou vi, qui n'a aucune limite.

Les fichiers de configuration sont colorés — commentaires, chaînes, nombres, clés, en-têtes de section, variables de shell et balises XML — d'après le nom du fichier ou, lorsque le nom ne dit rien, d'après la forme du contenu : scripts shell, directives à la manière de nginx et sshd, INI, YAML, JSON et XML. Le texte libre, les notes et les journaux restent volontairement sans couleur, où elle ne serait que du bruit. La coloration n'est qu'apparence et ne change jamais un octet.

Éditeur hexadécimal

Un fichier qui n'est pas du texte s'ouvre dans l'éditeur hexadécimal : les décalages à gauche, les octets au milieu, les caractères imprimables à droite, et un pavé pour les chiffres hexadécimaux. Touchez un octet et tapez deux chiffres pour le remplacer. Les valeurs changent, jamais la longueur : chaque position du fichier reste où elle était. Ouvrir en hexadécimal dans le menu d'un fichier ouvre ainsi n'importe quel fichier, et un fichier texte pris pour un binaire — avec un octet NUL égaré — peut tout de même être ouvert comme texte depuis la même boîte de dialogue.

// iOS
  • Envoi — ouvrez le menu Actions (⋯) et choisissez Envoyer… ; les fichiers se choisissent avec le navigateur Fichiers du système.
  • Où vont les téléchargements — dans le dossier propre à SSHBorg, que l'app Fichiers affiche sous Sur mon iPhone → SSHBorg (Sur mon iPad sur un iPad). Un téléchargement n'écrase jamais rien : si le nom est déjà pris, le nouveau fichier reçoit un nom numéroté.
  • Dossiers — appuyez longuement sur un fichier ou un dossier pour ouvrir son menu : Télécharger, Renommer, Supprimer.
  • Sélection multiple — choisissez Sélectionner des éléments dans le menu Actions, puis cochez les éléments. Un appui long ouvre plutôt le menu de l'élément.
  • Conflits à l'envoi — la boîte de dialogue propose Écraser, Conserver les deux (le fichier envoyé reçoit un nouveau nom) ou Annuler.
  • Édition — l'éditeur et l'éditeur hexadécimal sont là aussi : le menu d'un fichier, par appui long, propose Ouvrir dans l'éditeur et Ouvrir en hexadécimal. Pendant le chargement, le fichier passe par le dossier temporaire de l'app et en est retiré dès qu'il est lu.
  • Enregistrement — le fichier est écrit directement par-dessus l'original, et non dans un fichier temporaire à côté qui serait ensuite renommé à sa place : une connexion perdue au milieu d'un enregistrement peut donc le laisser à moitié écrit.

// CLÉS SSH

L'authentification par clé est plus sécurisée que les mots de passe et ne nécessite rien à mémoriser ni à saisir après la configuration.

Générer une clé

Appuyez sur l'icône de clé en haut de l'écran des hôtes pour ouvrir Clés SSH, puis générez une nouvelle clé. SSHBorg prend en charge :

  • Ed25519 — recommandé. Rapide, compact et sécurisé.
  • ECDSA (P-256 / P-384) — bonne compatibilité avec les anciens serveurs.
  • RSA (2048 / 4096 bits) — compatibilité maximale, mais plus lent.

Donnez à la clé un nom significatif (ex. mon-vps ou serveur-travail) pour la retrouver facilement.

// NOTE DE SÉCURITÉ
SSHBorg n'autorise intentionnellement pas l'export des clés privées. La clé ne quitte jamais l'appareil. Si vous avez besoin de la même clé sur un autre appareil, générez-en une nouvelle là-bas et autorisez-la séparément sur vos serveurs — c'est l'approche la plus sûre.

Autoriser la clé sur le serveur

Après avoir généré une clé, appuyez dessus pour voir la clé publique. Copiez-la et collez-la dans le fichier ~/.ssh/authorized_keys du serveur pour l'utilisateur souhaité.

  1. Sur votre téléphone, ouvrez SSHBorg → Clés SSH (l'icône de clé dans l'écran des hôtes) → appuyez sur la clé → copiez la clé publique.
  2. Connectez-vous à votre serveur (avec un mot de passe ou une autre clé déjà disponible).
  3. Ajoutez la clé publique au fichier des clés autorisées :
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    echo "ssh-ed25519 AAAA...votreclé..." >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
  4. Essayez de vous connecter avec SSHBorg — il devrait se connecter sans demander de mot de passe.
// PRÉREQUIS SERVEUR
Assurez-vous que votre serveur a PubkeyAuthentication yes dans /etc/ssh/sshd_config. C'est la valeur par défaut sur la plupart des distributions, mais certaines images renforcées le désactivent.

Chiffrer les clés et mots de passe enregistrés

Activez Paramètres → Sécurité → Chiffrer les données sensibles pour stocker les clés privées et les mots de passe des hôtes chiffrés avec une clé conservée dans le matériel sécurisé de l'appareil — l'Android Keystore, ou le Trousseau sur iOS. L'option reste désactivée tant que vous ne l'activez pas ; le conseil de sécurité affiché au premier lancement la signale.

Les données chiffrées sont liées à l'appareil et à cette installation de l'app : après désinstallation, les clés enregistrées ne peuvent pas être récupérées, et il faudrait en générer de nouvelles et les autoriser à nouveau sur vos serveurs. Avec un verrouillage de l'app, c'est fortement recommandé si vous gardez des identifiants sensibles sur votre téléphone.

Une clé protégée par une phrase secrète la demande une seule fois, à l'import, puis elle est conservée déverrouillée : la phrase elle-même n'est jamais écrite sur l'appareil. Une phrase secrète est le plus souvent réutilisée ailleurs, alors qu'une clé privée ne vaut que pour elle-même — et une clé conservée à côté de sa propre phrase n'en serait de toute façon pas protégée. Ici, ce qui la protège, c'est le stockage privé de l'app, Chiffrer les données sensibles et le verrou de l'app. Une clé importée par une version antérieure est restée chiffrée et ne peut pas s'authentifier : la liste les signale, et il faut les réimporter.

Deux formats chiffrés que l'app ne sait pas ouvrir : le conteneur OpenSSL (BEGIN ENCRYPTED PRIVATE KEY) et le .ppk de PuTTY. L'import le dit, plutôt que de prendre la clé à moitié. Déchiffrez-la avec l'outil qui l'a créée et réimportez-la — sur une copie, jamais sur votre seul fichier :

ssh-keygen -p -N "" -f id_ed25519_copy
openssl pkcs8 -in key.pem -out key_plain.pem

PuTTYgen convertit un .ppk via Conversions → Export OpenSSH key.

// iOS
Sur iOS, c'est identique : la phrase secrète est demandée une fois, à l'import, la clé est conservée déverrouillée et la phrase n'est écrite nulle part. iOS refuse un format de plus qu'Android : outre le conteneur OpenSSL et le .ppk de PuTTY, aussi l'ancien chiffrement PEM (Proc-Type: 4,ENCRYPTED), celui que ssh-keygen -m PEM écrit quand on lui donne une phrase secrète. Déchiffrez une telle clé et réimportez-la.

// SUGGESTIONS DE COMMANDES

SSHBorg affiche une barre de suggestions au-dessus du clavier pendant que vous tapez dans le terminal. Les suggestions proviennent de l'historique du shell de l'utilisateur avec lequel vous êtes connecté.

Fonctionnement

Lors de l'ouverture d'une session terminal, SSHBorg lit le fichier d'historique du shell sur le serveur distant. Il vérifie les emplacements suivants dans l'ordre :

  1. ~/.bash_history — par défaut pour les shells Bash
  2. ~/.zsh_history — par défaut pour Zsh (aussi vérifié comme $HISTFILE si défini)
  3. ~/.local/share/fish/fish_history — pour les utilisateurs de Fish shell

Le premier fichier existant et lisible est utilisé. Pendant la saisie, les commandes sont filtrées en temps réel et affichées sous forme de puces dans la barre de suggestions. Appuyez sur une puce pour insérer la commande.

Résolution de problèmes

Aucune suggestion n'apparaît

  • Le fichier d'historique n'existe peut-être pas encore (première connexion ou shell non configuré pour sauvegarder l'historique).
  • Assurez-vous que votre shell est configuré pour enregistrer l'historique. Pour Bash, ajoutez à ~/.bashrc :
    HISTFILE=~/.bash_history
    HISTSIZE=10000
    HISTFILESIZE=20000
  • Pour Zsh, ajoutez à ~/.zshrc :
    HISTFILE=~/.zsh_history
    HISTSIZE=10000
    SAVEHIST=10000
    setopt APPEND_HISTORY SHARE_HISTORY

Les suggestions appartiennent au mauvais utilisateur

// LIMITATION CONNUE
Si vous vous connectez en tant qu'un utilisateur puis exécutez sudo su - root (ou changez d'utilisateur avec su), la barre de suggestions affiche toujours l'historique de l'utilisateur de connexion d'origine, pas de root. Cela s'explique par le fait que SSHBorg lit le fichier d'historique avant le démarrage du shell, en utilisant les identifiants de connexion.

Pour obtenir les suggestions de l'historique root, ajoutez une entrée d'hôte séparée dans SSHBorg configurée pour se connecter directement en tant que root (si votre serveur le permet).

// GESTES DU TERMINAL

Le terminal répond à quelques gestes tactiles en plus de la frappe :

  • Faire défiler l'historique — glissez vers le haut ou le bas pour parcourir le tampon de défilement du terminal.
  • Zoom — pincez pour augmenter ou réduire la taille du texte.
  • Copier du texte — appuyez longuement n'importe où sur le terminal pour entrer en mode sélection. Faites glisser les poignées pour ajuster la zone sélectionnée, puis appuyez sur Copier la sélection pour le texte surligné, ou Tout copier pour toute la sortie. Appuyez en dehors pour annuler. Sur iOS, un appui long sélectionne le mot sous le doigt et ouvre le menu système avec Copier, Coller et Tout sélectionner ; faites glisser une extrémité de la sélection pour l'étendre.
  • Coller — utilisez le bouton Coller dans la barre de touches supplémentaires (visible lorsque le clavier est ouvert).

Applications plein écran. Les programmes qui occupent tout l'écran — tmux, vim, nano, less — n'ont pas d'historique propre : pendant leur exécution, la vue reste sur l'écran actif au lieu de glisser dans la sortie du shell située en dessous.

Pour faire défiler à l'intérieur, c'est à l'application de s'en charger. Dans tmux, ajoutez set -g mouse on à ~/.tmux.conf : un glissement parcourt alors l'historique du panneau situé sous votre doigt. Il en va de même pour tout programme acceptant la souris, comme vim avec set mouse=a. Avec screen, vérifiez que altscreen on figure dans ~/.screenrc — sur beaucoup de systèmes il est désactivé par défaut, et screen dessine alors par-dessus l'historique normal.

// RÉGLAGES DU TERMINAL

Dans Réglages → Terminal, vous pouvez adapter le terminal à vos besoins :

  • Couleurs du terminal — le schéma sombre classique (blanc sur noir), un schéma clair (noir sur blanc) plus lisible en plein jour, ou suivre le thème de l'appli, qui change automatiquement avec le thème de l'appli. Le changement s'applique immédiatement, y compris aux sessions déjà ouvertes.
  • Garder l'écran allumé — empêche l'écran de s'éteindre tant qu'un terminal est ouvert. Pratique pour surveiller des logs ou des commandes longues. Désactivé par défaut.
  • Taille de police par défaut — la taille du texte au démarrage des nouvelles sessions ; le zoom par pincement reste disponible dans chaque session.
  • Scrollback, défilement inversé et suggestions de commandes — contrôlent la quantité d'historique conservée, le sens du défilement et la barre de suggestions décrite plus haut.
  • Action du double appui — en option, un double appui sur le terminal envoie Tab (autocomplétion) ou Tab deux fois (liste tous les candidats). Désactivé par défaut. Sur iOS, tant que l'option est désactivée, un double appui sélectionne un mot.

// TOUCHES SUPPLÉMENTAIRES

Lorsque le clavier virtuel est ouvert, une rangée de boutons de raccourci apparaît au-dessus. Faites défiler la barre latéralement pour atteindre toutes les touches.

Touches de modification

Ctrl et Alt sont des bascules persistantes — touchez-en une, puis touchez une touche lettre pour envoyer la combinaison. Elles se réinitialisent automatiquement après la prochaine frappe.

  • Ctrl+C — interrompt le processus en cours.
  • Ctrl+D — envoie EOF / ferme le shell.
  • Ctrl+Z — suspend le processus.
  • Ctrl+L — efface l'écran.

Mode texte

L'icône de vérification orthographique bascule le clavier entre le mode terminal et le mode texte. En mode terminal (par défaut) la correction automatique et les suggestions de mots sont désactivées — idéal pour les commandes et les chemins de fichiers. En mode texte le clavier se comporte comme un champ de texte normal, avec les suggestions et la correction automatique activées. Utile pour taper du langage naturel via SSH, par exemple avec Claude Code ou d'autres outils interactifs.

Sur Android, le mode texte est aussi ce qui permet la saisie vocale. La touche microphone du clavier a besoin d'un vrai champ de texte où écrire : en mode terminal la dictée ne produit rien — passez en mode texte avant de dicter.

Navigation et édition

  • ESC — touche Échap.
  • Tab — auto-complétion du shell.
  • ↑ ↓ ← → — touches fléchées du curseur.
  • Home / End — aller au début ou à la fin de la ligne.
  • PgUp / PgDn — page précédente / page suivante.
  • Del — suppression avant (caractère à droite du curseur).
  • Coller — coller le presse-papiers dans le terminal.

Touches de fonction

Faites défiler la barre vers la droite pour atteindre les touches F1 à F12.

Dispositions et barres personnalisées

La barre existe en plusieurs dispositions. Touchez la touche ⇄ de la barre pour changer : les touches laissent place à la liste des barres disponibles, touchez-en une et c'est fait — le choix est mémorisé. Vous pouvez aussi choisir et gérer les barres dans Paramètres → Terminal → Barre de touches → Personnaliser.

  • Standard — la rangée unique classique, qui défile.
  • Naturelle — une rangée ordonnée par fréquence d'usage, avec / - | ~ et les flèches dans l'ordre du clavier (← ↑ ↓ →).
  • Naturelle ×2 — deux rangées qui remplissent la largeur : ESC / - Home ↑ End PgUp au-dessus de Tab Ctrl Alt ← ↓ → PgDn.
  • Naturelle ×3 — la même chose plus une troisième rangée avec les touches de fonction.
  • Minimale — seulement ESC, Tab, Ctrl et les flèches, pour les écrans étroits.

Pour créer la vôtre, dupliquez un préréglage (menu ⋮ à côté, ou un appui long sur iOS) ou créez une nouvelle barre. L'éditeur montre la barre exactement telle qu'elle apparaîtra : touchez une touche pour la sélectionner, puis utilisez les boutons en dessous pour la déplacer à gauche ou à droite, vers une autre rangée, la changer, ajouter une touche après elle ou la retirer. Chaque rangée peut défiler (les touches gardent leur largeur naturelle) ou remplir la largeur de l'écran (jusqu'à environ neuf touches par rangée sur un téléphone). Jusqu'à trois rangées ; la taille des touches est réglable.

En plus des touches habituelles, une barre personnalisée peut contenir des touches texte : n'importe quel texte, envoyé tel quel — un simple |, un préfixe sudo ou une commande entière. Utilisez \n pour Entrée, \t pour Tab et \e pour Échap ; ainsi ls -la\n devient une macro en une touche. Deux autres touches d'action existent : épingler garde la barre visible clavier fermé, clavier affiche ou masque le clavier.

Les barres personnalisées font partie de la sauvegarde des paramètres. Sur Android TV, tout fonctionne à la télécommande : les touches et boutons de l'éditeur sont accessibles au D-pad.

// TRANSFERT D'AGENT

Le transfert d'agent SSH permet d'utiliser les clés stockées dans SSHBorg pour authentifier des connexions supplémentaires effectuées depuis le serveur distant — par exemple pour git clone d'un dépôt privé, ou pour rebondir vers une deuxième machine.

Activer le transfert dans SSHBorg

Lors de l'ajout ou de la modification d'un hôte, activez le commutateur Transfert d'agent. SSHBorg agira comme agent SSH pour cette session.

Configuration côté serveur

Le serveur doit autoriser le transfert d'agent. Vérifiez /etc/ssh/sshd_config :

AllowAgentForwarding yes

C'est la valeur par défaut sur la plupart des systèmes. Après modification, redémarrez le démon SSH :

sudo systemctl restart sshd

Configuration client par hôte (optionnel)

Si vous vous connectez aussi à ce serveur depuis un ordinateur portable ou de bureau, vous pouvez configurer le transfert de façon permanente dans votre ~/.ssh/config local :

Host myserver
    HostName 203.0.113.42
    User ubuntu
    ForwardAgent yes
// NOTE DE SÉCURITÉ
Le transfert d'agent donne au serveur distant un accès temporaire à votre socket d'agent SSH. Un utilisateur root (ou un processus compromis) sur ce serveur pourrait utiliser vos clés pour se connecter ailleurs pendant que votre session est active. N'activez le transfert que sur les serveurs de confiance.

// CHIFFREMENTS LEGACY

Certains serveurs anciens — équipements réseau, appareils embarqués ou systèmes avec des versions obsolètes d'OpenSSH — ne supportent que des algorithmes de chiffrement que les clients SSH modernes n'annoncent plus par défaut.

En activant le commutateur Autoriser les chiffrements legacy dans les paramètres de l'hôte, SSHBorg ajoute les algorithmes suivants à la liste de négociation :

Algorithmes ajoutés

  • Chiffrements : aes128-cbc, aes192-cbc, aes256-cbc, 3des-cbc
  • Échange de clés : diffie-hellman-group14-sha1, diffie-hellman-group-exchange-sha1, diffie-hellman-group1-sha1
  • Type de clé hôte : ssh-dss (DSA 1024-bit)

Le serveur négocie toujours l'algorithme le plus fort supporté des deux côtés, donc activer cette option n'affaiblit pas les connexions aux serveurs modernes.

// iOS
Sur iOS, les clés d'hôte ssh-dss ne sont pas disponibles : la bibliothèque SSH avec laquelle l'app est compilée n'inclut plus DSA, donc un serveur dont la seule clé d'hôte est DSA reste inaccessible depuis un iPhone ou un iPad, même avec cette option activée.
// NOTE DE SÉCURITÉ
Les algorithmes de cette liste sont considérés comme cryptographiquement faibles. N'activez cette option que pour les serveurs que vous ne pouvez pas mettre à jour.

// COUPURES DE CONNEXION ET MULTIPLEXEURS

SSH est une connexion TCP active entre votre téléphone et le serveur. Si la connexion est interrompue — même une seconde — la session et tout ce qui s'y exécutait est perdu.

Pourquoi les connexions se coupent sur mobile

Les réseaux mobiles sont particulièrement sujets aux coupures de connexion pour plusieurs raisons :

  • Changements d'adresse IP — en voyage ou lors d'un changement d'antenne, votre opérateur peut vous attribuer une nouvelle IP publique. Comme les connexions TCP sont liées à l'adresse IP, la session SSH existante devient immédiatement invalide.
  • Basculement Wi-Fi ↔ données mobiles — passer d'un réseau Wi-Fi aux données mobiles (ou inversement) change votre IP et rompt toute connexion TCP ouverte.
  • Délais d'inactivité — les opérateurs et routeurs NAT ferment souvent les connexions inactives après quelques minutes. Les sessions actives mais silencieuses (surveillance de logs, attente de saisie) sont vulnérables.
  • Perte de signal — tunnels, parkings souterrains ou simplement un signal faible peuvent brièvement interrompre le réseau, ce qui suffit à tuer une session.
  • Limites d'arrière-plan d'Android — tant qu'une session est ouverte, SSHBorg maintient un service de premier plan, avec sa propre notification, de sorte qu'Android n'arrête plus les sessions au bout d'un temps donné : une session laissée ouverte continue de travailler pendant que vous utilisez d'autres apps. Peuvent encore y mettre fin le téléphone qui récupère de la mémoire ou l'économie de batterie que certains fabricants appliquent aux apps en arrière-plan — si vos sessions s'arrêtent d'elles-mêmes, la première chose à essayer est d'exclure SSHBorg de l'optimisation de la batterie. En rouvrant l'app, vous pouvez vous reconnecter.
  • iOS suspend les apps en arrière-plan — environ trente secondes après que SSHBorg a quitté l'écran, iOS la suspend et ses connexions tombent. À votre retour, SSHBorg se reconnecte d'elle-même (en ne demandant le mot de passe que s'il n'est pas enregistré) et marque l'endroit dans la sortie : c'est un nouveau shell, et ce qui tournait dans l'ancien est perdu. Sur iOS, un multiplexeur est le seul moyen de laisser un travail tourner pendant que vous utilisez une autre app.
// IMPORTANT
Si vous exécutez une longue commande (une compilation, une sauvegarde, une migration de base de données) directement dans le terminal SSH et que la connexion se coupe, la commande est immédiatement interrompue. Tout travail partiel peut se retrouver dans un état incohérent.

La solution : tmux ou screen

Un multiplexeur de terminal exécute une session persistante sur le serveur, complètement indépendante de votre connexion SSH. Si la connexion se coupe, la session et tout ce qu'elle exécute continue. À la reconnexion, vous vous réattachez et trouvez tout exactement comme vous l'avez laissé.

C'est l'habitude la plus utile pour quiconque gère des serveurs depuis un téléphone.

Démarrage rapide avec tmux

tmux est disponible sur la plupart des distributions Linux modernes et est le choix recommandé.

# Démarrer une nouvelle session nommée
tmux new -s work

# Se détacher de la session (la laisser tourner)
Ctrl+B, puis D

# Lister les sessions en cours
tmux ls

# Se rattacher à une session
tmux attach -t work

# Se rattacher à la session la plus récente
tmux attach

Démarrage rapide avec screen

screen est plus ancien mais disponible sur pratiquement tout système Unix, y compris les images serveur minimales où tmux peut ne pas être installé.

# Démarrer une nouvelle session nommée
screen -S work

# Se détacher de la session
Ctrl+A, puis D

# Lister les sessions en cours
screen -ls

# Se rattacher à une session
screen -r work

Flux de travail recommandé sur mobile

  1. Connectez-vous au serveur avec SSHBorg.
  2. Démarrez ou rattachez-vous immédiatement à une session tmux/screen : tmux attach || tmux new -s main
  3. Exécutez vos commandes dans le multiplexeur.
  4. Si la connexion se coupe, reconnectez-vous — votre session est toujours là.
// ASTUCE
Vous pouvez ajouter tmux attach || tmux new -s main à votre ~/.bashrc ou ~/.zshrc sur le serveur pour qu'une session multiplexeur démarre automatiquement à chaque connexion via SSHBorg.

// JUMP HOSTS

Un jump host (aussi appelé hôte bastion) est un serveur intermédiaire par lequel vous devez passer pour atteindre un serveur cible non directement accessible depuis internet. SSHBorg prend en charge nativement les chaînes de sauts simples et multi-sauts.

Configurer un jump host dans SSHBorg

  1. Ajoutez le serveur bastion comme hôte normal dans SSHBorg (ex. bastion).
  2. Ajoutez le serveur cible comme autre hôte.
  3. Dans les paramètres de l'hôte cible, définissez Jump host sur le bastion créé.
  4. Activez Transfert d'agent sur l'entrée du bastion — cela permet à votre clé d'être transférée via le bastion pour s'authentifier sur la cible.
// FONCTIONNEMENT
SSHBorg établit d'abord une connexion SSH au bastion, puis ouvre un canal TCP transféré via celui-ci vers le serveur cible. La clé privée ne quitte jamais le téléphone — le bastion ne fait que relayer le flux chiffré.

Chaînes multi-sauts

Si vous devez passer par plusieurs serveurs intermédiaires (ex. internet → bastion → dmz → cible), créez une entrée pour chaque saut et chaînez-les :

  • bastion — pas de jump host, transfert d'agent actif
  • dmz — jump host = bastion, transfert d'agent actif
  • target — jump host = dmz
// IMPORTANT
Le transfert d'agent doit être activé sur chaque saut intermédiaire, pas seulement le premier. Sans cela, la chaîne d'authentification se rompt et la connexion au serveur final échoue avec une erreur « permission denied ».

Configuration manuelle équivalente (pour référence)

La configuration équivalente dans un ~/.ssh/config sur ordinateur ressemble à ceci :

Host bastion
    HostName bastion.example.com
    User admin
    ForwardAgent yes

Host target
    HostName 10.0.1.50
    User ubuntu
    ProxyJump bastion
    ForwardAgent yes

Avec cette configuration, ssh target sur votre ordinateur passe de façon transparente par le bastion.

Exigences du pare-feu

  • Votre téléphone doit pouvoir atteindre le bastion sur son port SSH (généralement 22).
  • Le bastion doit pouvoir atteindre la cible sur son port SSH.
  • La cible n'a pas besoin d'être accessible directement depuis votre téléphone.

// SESSIONS MULTIPLES

SSHBorg vous permet de garder plusieurs sessions de terminal SSH et de gestionnaire de fichiers SFTP ouvertes en même temps, même vers des serveurs différents.

  • Appuyez sur un hôte pour ouvrir un terminal, ou choisissez Fichiers dans son menu pour ouvrir le gestionnaire de fichiers. Si l'hôte a déjà des sessions ouvertes, le même menu en ouvre d'autres.
  • Basculez entre les sessions ouvertes avec les onglets sous le terminal ; un hôte avec plusieurs sessions ouvre un sélecteur numéroté.
  • Les sessions restent actives en arrière-plan tant que la connexion réseau tient — sur iOS pendant peu de temps seulement, voir Coupures de connexion.
  • La liste des hôtes affiche un petit badge à côté de chaque hôte avec le nombre de sessions SSH et SFTP actives, pour voir d'un coup d'œil ce qui est ouvert.
// ASTUCE
Les commandes longues (compilations, sauvegardes, suivi de logs) continuent de s'exécuter même quand vous basculez vers une autre session. Utilisez un multiplexeur de terminal comme tmux ou screen côté serveur si vous souhaitez qu'elles survivent même à une coupure de connexion SSH.

// SÉCURITÉ DE L'APP

Verrouillage de l'app

Choisissez comment l'app est protégée dans Paramètres → Sécurité → Verrouillage de l'app : Aucun (par défaut), Biométrie uniquement (empreinte digitale ou reconnaissance faciale), Verrouillage de l'appareil (le code PIN, le schéma ou le mot de passe de l'appareil, en plus de la biométrie) ou un PIN ou une phrase secrète intégrés. Quand un verrouillage est actif, SSHBorg exige une authentification avant d'afficher des hôtes, des identifiants ou des données de session. Si l'authentification est refusée, ou si vous l'annulez, l'app reste sur son propre écran de verrouillage avec un bouton pour réessayer : elle ne se ferme pas, les sessions ouvertes sont donc toujours là au déverrouillage.

Le PIN ou la phrase secrète intégrés fonctionnent sur tout appareil, même sans matériel biométrique ni verrouillage d'écran système — c'est donc le bon choix sur une Android TV. Les modifier ou les supprimer demande d'abord le code actuel. Il n'y a aucun moyen de le récupérer en cas d'oubli : vous devriez effacer les données de l'app ou la réinstaller, alors gardez une sauvegarde de vos hôtes.

Vous pouvez définir un délai d'inactivité — après ce délai en arrière-plan, l'app se verrouille automatiquement.

// iOS
Le verrouillage propose Aucun, Biométrie uniquement (Face ID ou Touch ID) et Verrouillage de l'appareil (le code de l'appareil ou la biométrie). Il n'y a pas de PIN ni de phrase secrète intégrés.

Protection des captures d'écran

Par défaut, SSHBorg bloque les captures d'écran et l'enregistrement d'écran pour empêcher le contenu sensible du terminal de fuiter via l'écran des apps récentes ou des outils de capture.

Si vous devez prendre une capture (ex. pour partager une sortie terminal), vous pouvez désactiver temporairement la protection dans Paramètres → Sécurité → Autoriser les captures.

// iOS
iOS ne permet pas à une app de bloquer les captures ou l'enregistrement d'écran, ce réglage n'existe donc pas. Avec un verrouillage activé, SSHBorg masque son contenu dès qu'elle quitte l'écran, afin que les hôtes et les terminaux n'apparaissent pas dans le sélecteur d'apps.

Stockage des identifiants

Avec Chiffrer les données sensibles activé (voir Clés SSH), les mots de passe et les clés privées sont stockés chiffrés avec une clé conservée dans l'Android Keystore — matériel sur Android 10+ — ou, sur iOS, dans le Trousseau, limitée à cet appareil. Les identifiants ne sont jamais écrits sur un stockage externe ni transmis nulle part.

// NOTE SUR LES SAUVEGARDES
Comme la clé de chiffrement ne quitte jamais le matériel sécurisé de l'appareil, les clés ne peuvent pas être restaurées depuis une sauvegarde cloud ou de l'appareil et ne seront pas transférées automatiquement vers un nouveau téléphone. Avant de changer d'appareil, assurez-vous d'autoriser une nouvelle clé générée sur le nouvel appareil sur tous vos serveurs.

La configuration la plus sûre

Chaque élément ci-dessus est utile en soi. Ensemble, ils constituent le maximum que l'app puisse offrir, et cela prend deux minutes :

  1. Activez Réglages → Sécurité → Chiffrer les données sensibles.
  2. Mettez le verrou de l'app sur Biométrie seule — ou sur Code ou phrase secrète si vous préférez ne pas dépendre de la biométrie du téléphone.
  3. Mettez le délai de verrouillage sur Immédiatement, au plus 30 secondes.
  4. Générez une nouvelle clé dans l'app, avec un nom qui dise de quel appareil il s'agit.
  5. Autorisez cette clé sur vos serveurs et utilisez-la à la place du mot de passe.

Une clé générée sur le téléphone n'a jamais existé ailleurs : pas de copie plus ancienne qui aurait pu fuiter, rien à nettoyer sur une autre machine. Une clé par appareil signifie aussi qu'un téléphone perdu coûte une ligne dans authorized_keys — vous la retirez et vos autres appareils continuent de fonctionner, et c'est pourquoi le nom mérite d'être bien choisi.

Ce que rien de tout cela ne peut faire : si le téléphone lui-même est compromis, cette clé l'est avec lui, quoi qu'il la protège sur le disque. Une phrase secrète ne la sauverait pas non plus — ce qui peut lire le stockage de l'app peut aussi lire ce que vous tapez. C'est pourquoi SSHBorg demande la phrase secrète d'une clé une seule fois, à l'import, et conserve la clé déverrouillée plutôt que la phrase (voir Clés SSH).

// SAUVEGARDE DE LA CONFIGURATION

SSHBorg peut exporter et importer les configurations des hôtes et les réglages de l'application sous forme de fichier JSON. Cela permet de transférer la liste des serveurs vers un autre appareil ou de conserver une sauvegarde portable de sa configuration.

// IMPORTANT
La sauvegarde inclut les configurations des hôtes et les réglages de l'application (terminal, apparence, comportement). Les mots de passe et les clés SSH ne sont jamais exportés — le contenu de la clé doit être reconfiguré sur un nouvel appareil. La sauvegarde enregistre toutefois le nom de la clé utilisée par chaque hôte : si vous recréez une clé du même nom avant l'importation, ses hôtes y sont automatiquement reliés.

Exporter

Allez dans Paramètres → Sauvegarde → Exporter la sauvegarde. Choisissez où enregistrer le fichier via le sélecteur de fichiers système. Le fichier s'appelle sshborg_backup.json (sshborg-backup-date.json sur iOS) par défaut.

Importer

Allez dans Paramètres → Sauvegarde → Importer la sauvegarde. Sélectionnez le fichier .json précédemment exporté (ou créé manuellement). SSHBorg le fusionnera avec la liste des hôtes existants :

  • Les hôtes dont le nom correspond à une entrée existante sont mis à jour.
  • Les hôtes avec un nouveau nom sont ajoutés.
  • Les hôtes absents du fichier restent inchangés.
  • Un hôte mis à jour conserve son mot de passe, sa clé et sa clé d'hôte acceptée — la sauvegarde ne les contient jamais.
  • Un hôte sans clé est relié à une clé dont le nom correspond au keyLabel exporté, s'il en existe une ; sinon le champ est ignoré.
  • Un hôte mis à jour conserve les données d'usage déjà présentes sur cet appareil — dernière connexion, compteur et position manuelle ; le fichier ne comble que ce qui manque.

Format JSON

Le fichier exporté est un objet JSON standard. Vous pouvez également le créer manuellement pour importer en masse une liste de serveurs depuis une autre source.

{
  "version": 7,
  "exported_at": "2026-05-14T10:00:00Z",
  "groups": [
    { "name": "Production", "color": -1754827, "position": 0 }
  ],
  "hosts": [
    {
      "label":           "Mon VPS",
      "hostname":        "203.0.113.42",
      "port":            22,
      "username":        "ubuntu",
      "agentForwarding": false,
      "jumpMode":        "simple",
      "jumpHosts":       null,
      "jumpHostIdList":  null,
      "portForwardings": null,
      "sftpStartMode":   "last",
      "sftpStartDir":    null,
      "sftpShowHidden":  false,
      "allowLegacyCiphers": false,
      "position":        0,
      "lastConnected":   1757404800000,
      "connectCount":    12,
      "keyLabel":         "Clé de mon VPS",
      "group":           "Production"
    }
  ],
  "settings": {
    "night_mode":            0,
    "scrollback_lines":      2000,
    "terminal_font_size":    13,
    "terminal_color_scheme": 0,
    "double_tap_action":     0
  }
}

L'objet settings (facultatif) contient les réglages de l'application et est écrit automatiquement à l'exportation ; vous pouvez l'omettre en créant le fichier à la main.

Référence des champs

  • label — nom affiché dans SSHBorg. Utilisé comme clé unique pour la fusion lors de l'import. Obligatoire.
  • hostname — adresse ou IP du serveur (IPv4 ou IPv6). Obligatoire.
  • port — port SSH. Par défaut : 22.
  • username — utilisateur de connexion. Obligatoire.
  • agentForwarding — true pour activer le transfert de l'agent SSH. Par défaut : false.
  • jumpMode — "simple" (utilise le texte de jumpHosts) ou "host_list" (utilise les ID internes SSHBorg). Utilisez "simple" lors d'une création manuelle.
  • jumpHosts — jump hosts séparés par des virgules au format [utilisateur@]hôte[:port]. Utilisé uniquement quand jumpMode est "simple".
  • portForwardings — règles de redirection de port local séparées par des sauts de ligne en syntaxe SSH -L, ex. "8080:localhost:8080".
  • sftpStartMode — répertoire de départ SFTP : "last" (mémoriser le dernier visité), "fixed" (toujours utiliser sftpStartDir), "home" (dossier personnel du serveur). Par défaut : "last".
  • sftpStartDir — chemin à utiliser quand sftpStartMode est "fixed".
  • sftpShowHidden — true pour afficher les fichiers cachés (dotfiles, noms commençant par ".") dans l'explorateur SFTP de cet hôte. Par défaut false.
  • allowLegacyCiphers — true pour activer les algorithmes hérités décrits plus haut. Par défaut : false.
  • keyLabel — nom de la clé SSH utilisée par cet hôte. À l'import, si une clé de ce nom existe, l'hôte y est relié ; sinon le champ est ignoré. La clé elle-même n'est jamais incluse dans la sauvegarde.
  • group — nom du groupe auquel appartient l'hôte. Les groupes figurent dans le tableau groups au niveau racine, avec name et color (ARGB en entier 32 bits signé). Si un hôte référence un groupe absent du tableau, celui-ci est créé automatiquement avec une couleur par défaut — vous pouvez donc omettre le tableau en écrivant le fichier à la main.
  • color — couleur facultative de l'hôte (ARGB en entier 32 bits signé). Elle prime sur la couleur du groupe.
  • position — place de l'hôte dans l'ordre manuel, comptée à l'intérieur de sa propre section (le bloc sans groupe, ou un groupe). Sans valeur, l'hôte est ajouté à la fin. Les groupes ont leur propre position dans le tableau groups.
  • lastConnected — date de la dernière connexion, en millisecondes depuis l'époque Unix. Alimente l'ordre « utilisés récemment ».
  • connectCount — nombre de sessions de terminal ouvertes vers cet hôte. Alimente l'ordre « les plus utilisés ».
// CHAMPS OPTIONNELS
Tous les champs sauf label, hostname et username sont optionnels. Les champs omis prennent leur valeur par défaut.

// ANDROID TV

SSHBorg fonctionne sur Android TV et Google TV. Il s'utilise avec le pavé directionnel de la télécommande, mais comme c'est une app très axée sur le texte, un clavier physique change tout.

Naviguer avec la télécommande

  • Flèches du D-pad — déplacent le focus entre les lignes et les contrôles.
  • OK (centre) — l'action principale : se connecter à un hôte, ouvrir un dossier, télécharger un fichier, déployer un groupe.
  • Retour — remonter d'un niveau ou quitter l'écran.

Ouvrir le menu d'une ligne

Pour renommer, supprimer, modifier, dupliquer ou télécharger depuis une ligne, ouvrez son menu : appuyez sur la touche Menu (options) de la télécommande sur la ligne sélectionnée, ou maintenez OK (appui long). OK seul exécute l'action principale, pas le menu.

Saisie : utilisez un clavier physique

Un clavier physique — USB ou Bluetooth (Android TV prend en charge les deux) est fortement recommandé, et pratiquement indispensable pour le terminal. Avec lui, les champs de texte et le shell fonctionnent normalement.

Sans clavier, le clavier à l'écran gère tout de même les saisies courtes : sélectionnez un champ, appuyez sur OK pour l'ouvrir, tapez, puis appuyez sur OK / Valider du clavier pour confirmer — sur l'invite de mot de passe, cela connecte directement. Saisir des commandes shell avec le clavier à l'écran reste toutefois peu pratique.

Verrouiller l'app sur un téléviseur

Un téléviseur n'a généralement ni lecteur d'empreinte ni verrouillage d'écran : protégez l'app avec le verrouillage intégré par code PIN ou phrase secrète (Paramètres → Sécurité) — il fonctionne entièrement à la télécommande ou au clavier. Voir Sécurité de l'app.

// LICENCES OPEN SOURCE

SSHBorg est un logiciel libre, publié sous GNU General Public License v3. Son code source est sur GitHub, pour l'application Android comme pour celle d'iOS. Il utilise les bibliothèques suivantes, chacune sous sa propre licence :

  • mwiede/JSch — le protocole SSH sur Android — licence de type BSD
  • Bouncy Castle — la cryptographie sur Android — licence de type MIT
  • sora-editor — le composant d'édition de texte utilisé pour modifier les fichiers sur le serveur, sur Android — GNU LGPL v2.1
  • libssh2 — le protocole SSH sur iOS — licence BSD

Aucune ne se connecte à quoi que ce soit d'elle-même : les seules adresses contactées par SSHBorg sont les serveurs que vous lui indiquez, et sshborg.com lorsque vous touchez un lien. Il n'y a aucune bibliothèque d'analyse, aucune régie publicitaire et aucun traceur.

⚙⚙⚙