Comment se connecter en SSH depuis un iPhone

Installez une app cliente SSH, indiquez l'adresse, le port et l'utilisateur du serveur, et connectez-vous avec une clé créée pour le téléphone. Le serveur doit être joignable depuis le réseau du téléphone, directement ou via un VPN. Lancez tmux sur le serveur, car iOS suspend les apps en arrière-plan et la connexion va tomber. tmux garde votre travail en cours jusqu'à votre retour.

Mis à jour le . Les commandes côté serveur (tmux, ssh-keygen -lf, et restrict,pty et from= dans authorized_keys) ont été exécutées avec OpenSSH 10.0 sur Debian 13 dans un conteneur jetable, depuis macOS.

Ce qu'il vous faut

  • Un serveur qui accepte SSH, avec son adresse, son port (22 sauf changement) et un nom d'utilisateur.
  • Un chemin réseau depuis le téléphone. Un serveur avec une adresse publique est joignable de partout. Un serveur à la maison ou au bureau ne l'est en général pas, comme expliqué plus bas.
  • Une clé sur le téléphone, ou un mot de passe si le serveur en accepte encore.
  • Une app cliente SSH. iOS n'en fournit pas.

Joindre un serveur privé

Un téléphone en données mobiles n'est pas sur le réseau de votre domicile ou de votre bureau : les adresses 192.168.x.x expireront. Il y a deux façons d'entrer :

  • VPN ou réseau overlay (recommandé). Placez le téléphone et le serveur sur le même réseau privé avec WireGuard ou un outil équivalent. Le port 22 n'a alors plus besoin d'être exposé sur internet.
  • Redirection de port sur le routeur. Cela expose SSH à tout internet, et ne marche pas si votre fournisseur vous place derrière un CGNAT. Si vous le faites, désactivez d'abord la connexion par mot de passe. Voir comment désactiver la connexion par mot de passe.

Une connexion qui reste figée puis échoue indique un problème de réseau, pas de connexion. Voir Connection timed out.

Les clés sur un téléphone

Créez une nouvelle clé sur le téléphone, dans l'app, et ne copiez pas la clé privée de votre ordinateur portable. Une copie fait transiter la clé par un e-mail, une messagerie ou un dossier cloud, et si le téléphone est perdu, vous devez remplacer cette clé partout où vous l'utilisez.

Avec une clé par appareil, il suffit de retirer une ligne de authorized_keys pour bloquer le téléphone, et votre ordinateur continue de fonctionner. Choisissez Ed25519 et définissez une phrase secrète si l'app le permet.

Copiez la clé publique de l'app sur le serveur, depuis une session que vous avez déjà :

echo 'ssh-ed25519 AAAA...your-public-key... iphone' >> ~/.ssh/authorized_keys

Vous pouvez limiter ce que cette clé a le droit de faire. Cette ligne autorise un terminal mais ni tunnels ni redirections, et n'accepte la clé que depuis une plage d'adresses VPN, ce qui rend une clé volée moins utile :

from="10.0.0.0/24",restrict,pty ssh-ed25519 AAAA...your-public-key... iphone

Dans notre test, la clé s'est connectée depuis une adresse correspondante et a été refusée depuis une autre, avec les redirections bloquées. Retirez from= si votre téléphone n'a pas de plage fixe.

Vérifier l'empreinte à la première connexion

La première fois, l'app affiche l'empreinte de la clé du serveur. Comparez-la à la vraie, depuis une session de confiance :

ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

C'est encore plus important sur un téléphone, car vous êtes plus souvent sur des réseaux que vous ne contrôlez pas. Lisez comment fonctionne known_hosts.

Pourquoi la connexion tombe, et que faire

iOS suspend les apps peu après leur sortie de l'écran, et une app suspendue ne peut pas maintenir sa connexion réseau. Elle peut demander un court délai supplémentaire, mais c'est le système qui décide de sa durée. Si l'app ne sait pas rester connectée en arrière-plan, quelques minutes sur une autre app ou un téléphone verrouillé suffisent à perdre la session. Un changement de réseau, comme du Wi-Fi vers les données mobiles, coupe aussi une connexion SSH ordinaire. Les réglages de keep-alive ne changent rien dans ces deux cas.

Ne luttez donc pas. Faites tourner votre travail dans tmux sur le serveur, et rattachez-vous après chaque reconnexion :

tmux new -A -s phone

Les programmes qu'il contient continuent de tourner pendant l'absence du téléphone. Les détails sont dans comment garder les sessions actives avec tmux. Ne lancez pas de tâche longue en dehors de tmux depuis un téléphone.

Terminal d'iPhone connecté à un serveur de test nommé Production, avec une liste de répertoires et une rangée de touches Esc, Tab, Ctrl et flèches

Mosh est l'autre réponse à un réseau qui change. Lisez Mosh ou SSH : quelle différence avant de l'installer sur le serveur.

Comment choisir une app

  • Touches supplémentaires. Esc, Tab, Ctrl et les flèches doivent être à un toucher. Le clavier iOS n'en a aucune.
  • Clés. L'app doit générer des clés Ed25519, afficher la clé publique et permettre de définir une phrase secrète.
  • Vérification des clés d'hôte. Elle doit afficher l'empreinte à la première connexion et s'arrêter quand elle change.
  • Où sont gardés les secrets. Cherchez le Trousseau iOS ou un chiffrement solide, et lisez ce que dit l'éditeur sur la synchronisation.
  • Verrouillage de l'app. Si quelqu'un d'autre peut un jour tenir votre téléphone déverrouillé, un verrouillage par Face ID ou par code compte.
  • Reconnexion. Vérifiez si elle reste connectée en arrière-plan, si elle se reconnecte seule, et si elle peut lancer une commande comme la ligne tmux ci-dessus après la connexion. Certaines apps proposent Mosh, un protocole distinct qui survit aux changements de réseau et demande un composant côté serveur.
  • Qualité du terminal. Essayez tmux et vim dedans avant de compter dessus.

Questions

L'iPhone a-t-il un client SSH intégré ?

Non. iOS n'a ni terminal ni commande ssh, une session interactive demande donc une app client SSH. L'app Raccourcis peut seulement lancer un script via SSH.

Pourquoi ma session SSH se déconnecte-t-elle sur iPhone ?

iOS suspend les apps peu après qu'elles quittent l'écran, et une app suspendue ne peut pas garder sa connexion. Travaillez dans tmux sur le serveur et rattachez-vous, ou utilisez Mosh pour les changements de réseau.

Puis-je me connecter avec une clé SSH depuis un iPhone ?

Oui. Créez une clé Ed25519 dans l'app SSH et ajoutez sa clé publique à authorized_keys sur le serveur. Utilisez une clé par appareil : un téléphone perdu s'exclut en supprimant une ligne.

Sources

Autres guides : SSH depuis un téléphone

Tous les guides