// AJOUTER UN HÔTE

Appuyez sur le bouton + dans l'écran des hôtes pour ajouter un nouveau serveur.

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

// 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é

Allez dans Paramètres → Clés SSH → Générer 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 → Paramètres → Clés SSH → 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.

Chiffrement supplémentaire de la clé

SSHBorg propose une phrase secrète supplémentaire optionnelle pour vos clés (Paramètres → Clés SSH → appuyez sur une clé → Activer le chiffrement). Quand elle est activée, la clé est chiffrée avec une phrase que SSHBorg ne stocke pas — elle vous sera demandée à chaque utilisation.

Fortement recommandé si vous stockez des identifiants sensibles sur votre téléphone ou si le verrouillage biométrique est désactivé.

// 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).

// 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.

// 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.
// 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.

  • Ouvrez une session depuis l'écran des hôtes en appuyant sur Terminal ou SFTP.
  • Basculez entre les sessions ouvertes via le sélecteur de sessions en haut de l'écran.
  • Les sessions restent actives en arrière-plan tant que la connexion réseau tient.
  • 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 biométrique

Activez le verrouillage biométrique dans Paramètres → Sécurité → Verrouillage biométrique. Quand il est actif, SSHBorg exige une empreinte digitale ou une reconnaissance faciale avant d'afficher des hôtes, des identifiants ou des données de session.

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

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.

Stockage des identifiants

Tous les identifiants (mots de passe, clés privées, phrases secrètes) sont stockés chiffrés en utilisant l'Android Keystore — une enclave sécurisée matérielle disponible sur Android 10+. Ils ne sont jamais écrits sur un stockage externe ni transmis nulle part.

// NOTE SUR LES SAUVEGARDES
Comme les clés sont stockées dans l'Android Keystore, elles ne peuvent pas être sauvegardées via la sauvegarde cloud Android 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.