Les clés SSH sur iPhone et iPad sont générées sur l'appareil lui-même et conservées dans le stockage sécurisé du système. Seule la clé publique est envoyée au serveur, où elle est ajoutée à ~/.ssh/authorized_keys avec ssh-copy-id ou à la main. La clé privée ne doit jamais quitter le téléphone, et le serveur attend des permissions 700 sur ~/.ssh et 600 sur authorized_keys.
Comment générer une clé SSH Ed25519 sur iPhone ou iPad
OpenSSH prend en charge les clés Ed25519 depuis la version 6.5, publiée en janvier 2014 : tout serveur raisonnablement à jour les accepte donc. Ed25519 est le type à choisir pour une nouvelle clé. Il évite aussi de dépendre de la signature SHA-1 ssh-rsa, désactivée par défaut depuis OpenSSH 8.8 (septembre 2021).
Sur un ordinateur de bureau, on crée la paire de clés avec ssh-keygen. Les options sont détaillées dans la page de manuel officielle de ssh-keygen :
ssh-keygen -t ed25519 -C "iphone-work"
# Creates ~/.ssh/id_ed25519 (private) and ~/.ssh/id_ed25519.pub (public)Un iPhone ou un iPad ne dispose pas de ssh-keygen en local : c'est donc le client SSH qui génère la clé. Dans termi1, la clé est créée sur le téléphone et reste dans le stockage sécurisé du système. Vous obtenez la paire habituelle :
- une clé privée qui ne quitte jamais l'appareil ;
- une clé publique, qui tient sur une seule ligne de texte (par exemple
ssh-ed25519 AAAA… comment) et qui est la seule partie à copier sur le serveur.
Si vous utilisez une clé de sécurité FIDO2, OpenSSH accepte les clés ed25519-sk depuis la version 8.2 (février 2020). Le serveur doit exécuter cette version ou une version plus récente.
Où la clé SSH est stockée sur iPhone et sur un ordinateur
Sur un ordinateur qui utilise OpenSSH, la clé privée est un fichier dans ~/.ssh/ avec des permissions 600. Elle n'est protégée que par ces permissions et par une phrase de passe, si vous en avez défini une. Sur iOS, la clé se trouve dans le stockage sécurisé du système, et l'app l'utilise pour s'authentifier sans la laisser traîner sous forme de fichier isolé.
| Élément comparé | iPhone / iPad (termi1) | Ordinateur (OpenSSH) |
|---|---|---|
| Emplacement de la clé privée | Stockage sécurisé du système | Fichier dans ~/.ssh avec permissions 600 |
| Mode de génération | Depuis l'app, sur l'appareil lui-même | ssh-keygen -t ed25519 |
| Envoi de la clé publique au serveur | Collée dans authorized_keys ou associée via termi1 Companion sur un Mac | ssh-copy-id ou collée dans authorized_keys |
| La clé privée quitte-t-elle la machine ? | Non ; elle n'est jamais envoyée non plus aux serveurs de termi1 | Seulement si vous la copiez vous-même |
| Ce qui se synchronise entre appareils | Connexions et raccourcis avec un compte facultatif ; jamais la clé privée | Rien ; vous copiez la configuration à la main |
En pratique, chaque appareil reçoit sa propre clé. Donnez à chacune un commentaire qui l'identifie (iphone-work, ipad-home). Si vous perdez le téléphone, vous pourrez alors révoquer uniquement cette ligne.
Copier la clé SSH publique sur le serveur avec ssh-copy-id
ssh-copy-id ajoute une clé publique à ~/.ssh/authorized_keys sur le serveur et crée le répertoire s'il n'existe pas. Il s'exécute sur une machine équipée d'OpenSSH. Utilisez-le lorsque la clé publique de l'iPhone se trouve déjà sur votre portable (via AirDrop, e-mail ou presse-papiers) et que le portable peut se connecter au serveur.
# Save the iPhone's public key line as iphone-work.pub and upload it
ssh-copy-id -f -i iphone-work.pub user@server
# If sshd is not listening on port 22
ssh-copy-id -f -i iphone-work.pub -p 2222 user@serverL'option -f est nécessaire car la clé privée ne se trouve pas sur le portable. Sans elle, ssh-copy-id utilise la clé privée correspondante pour vérifier si la clé est déjà installée. OpenSSH écoute par défaut sur le port TCP 22 ; -p n'est donc utile que si vous l'avez modifié.
Ajouter la clé SSH à authorized_keys depuis l'iPhone lui-même
sshd attend des permissions 700 sur ~/.ssh et 600 sur authorized_keys : définissez-les au moment d'ajouter la clé à la main. Sans ordinateur intermédiaire, connectez-vous une fois avec un mot de passe depuis l'iPhone et exécutez :
mkdir -p ~/.ssh && chmod 700 ~/.ssh
echo 'ssh-ed25519 AAAA...your-key... iphone-work' >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keysUtilisez >>, et non >. Un seul chevron écrase le fichier et bloque l'accès à toutes les autres clés.
Le clavier de termi1 dispose des touches Ctrl, Tab et des flèches pour corriger la ligne. Le SFTP intégré permet d'afficher ou de télécharger authorized_keys pour vérifier que la ligne est complète. Si vous demandez la commande à l'IA, elle est saisie à l'invite sans appuyer sur Entrée, et l'IA ne reçoit jamais de clés ni de mots de passe.
Avec un Mac, la procédure est plus courte. termi1 Companion (macOS 14 ou ultérieur, gratuit, dans la barre des menus) vérifie Session à distance, mosh-server et tmux. Il associe ensuite l'iPhone à l'aide d'un code à six chiffres qui installe la clé publique.
Une fois la connexion par clé fonctionnelle, définissez PasswordAuthentication no dans /etc/ssh/sshd_config. Gardez votre session actuelle ouverte jusqu'à avoir confirmé l'accès par clé depuis une deuxième session.
4 erreurs lors de l'utilisation des clés SSH depuis un iPhone ou un iPad
Ces quatre problèmes poussent sshd à redemander un mot de passe ou empêchent carrément la session de s'ouvrir :
- Permissions trop ouvertes. Avec
StrictModes yes, la valeur par défaut, sshd ignore authorized_keys si d'autres utilisateurs peuvent y écrire. Rétablissez 700 et 600. - Ligne coupée lors du collage. Une clé publique tient sur une seule ligne, et un saut de ligne au milieu la rend invalide.
- Croire que Mosh se passe de la clé. Mosh lance mosh-server via une connexion SSH initiale, puis a besoin des ports UDP 60000-61000. Il ne gère ni la redirection de ports ni X11.
- Exposer le port 22 uniquement pour votre téléphone. Pour les machines sans IP publique, un réseau maillé sans ports ouverts comme Prialo, ou Tailscale, est une solution plus propre.
Une fois la clé en place, termi1 maintient la session active avec Mosh lorsque vous passez du Wi-Fi aux données mobiles. Il utilise tmux pour que tout ce que vous avez laissé tourner soit toujours là à votre retour. Le terminal complet fonctionne sans compte ; téléchargez le terminal termi1 sur l'App Store.
Questions fréquentes
Peut-on exécuter ssh-copy-id depuis un iPhone ?
ssh-copy-id ne s'exécute pas sur un iPhone, car iOS n'inclut aucun shell local avec les outils OpenSSH. Depuis le téléphone, connectez-vous avec un mot de passe et ajoutez la clé publique à ~/.ssh/authorized_keys avec echo et >>. Sinon, lancez ssh-copy-id -f -i depuis un ordinateur qui accède déjà au serveur.
Quel type de clé SSH générer sur un iPhone ?
Le meilleur type de clé SSH à générer sur un iPhone est Ed25519, pris en charge par OpenSSH depuis la version 6.5 en janvier 2014. Évitez de dépendre de la signature SHA-1 ssh-rsa, désactivée par défaut depuis OpenSSH 8.8. Avec une clé de sécurité FIDO2, le type ed25519-sk exige OpenSSH 8.2 ou ultérieur.
La clé SSH privée quitte-t-elle l'iPhone avec termi1 ?
Une clé SSH privée générée dans termi1 ne quitte jamais l'iPhone : elle reste dans le stockage sécurisé du système et n'est jamais envoyée aux serveurs de termi1. Le compte facultatif synchronise les connexions et les raccourcis, pas les clés privées. L'IA n'ouvre pas la session et ne reçoit jamais de clés ni de mots de passe.
Quelles permissions authorized_keys doit-il avoir pour que la clé fonctionne ?
Le fichier authorized_keys doit avoir les permissions 600 et le répertoire ~/.ssh les permissions 700, tous deux appartenant à l'utilisateur. Avec StrictModes activé, la valeur par défaut de sshd, des permissions plus larges amènent le serveur à ignorer la clé et à redemander un mot de passe.