SSD Nodes Learn 8GB de RAM — $66/an
Guides Matt ConnorPar Matt Connor · Mis à jour le 2026-08-02

Utiliser Claude Code depuis votre téléphone

Claude Code tourne dans tmux sur un VPS, pas sur votre téléphone. Configurez les clés SSH, mosh, tmux attach et les raccourcis clavier utiles.

Claude Code depuis votre téléphone : comment cela fonctionne réellement

Claude Code depuis votre téléphone n’est pas une application mobile. Claude Code s’exécute sur un VPS (serveur privé virtuel), dans une session tmux qui reste ouverte, et votre téléphone ouvre une connexion SSH (secure shell) vers cette session tant que vous la consultez. Fermez l’application : l’agent continue de fonctionner, car le processus ne s’est jamais exécuté sur le téléphone.

Cette séparation constitue toute l’architecture. Un système d’exploitation mobile suspend une application quelques secondes après que vous l’avez quittée. Toute tâche longue lancée sur le téléphone s’arrête donc. Le téléphone reçoit aussi une nouvelle adresse réseau chaque fois que vous passez du wifi aux données mobiles. Ces deux problèmes disparaissent lorsque le processus s’exécute sur un serveur et que le téléphone affiche uniquement l’écran.

Vous avez besoin de quatre éléments sur le serveur : tmux pour conserver la session, des clés SSH pour vous connecter, mosh pour gérer les changements de réseau et Claude Code lui-même. Côté téléphone, une seule application de terminal avec une rangée de touches facilement accessible suffit.

Ce qu’il vous faut sur le VPS

Un petit serveur Ubuntu 24.04 suffit pour les parties consacrées à SSH et à tmux. Claude Code demande davantage de ressources. Selon les exigences officielles en juillet 2026, il faut Ubuntu 20.04 ou une version ultérieure sur un processeur x64 ou ARM64, avec au moins 4 GB de RAM. Un forfait de 1 GB permet de l’installer, mais le kernel arrête ensuite le processus en cas de charge. Claude Code nécessite également un compte Claude payant (Pro, Max, Team ou Enterprise) ou un compte Console avec un accès à l’API, car l’offre gratuite Claude.ai ne l’inclut pas.

Configurez le serveur avec un utilisateur ordinaire disposant de sudo, et non avec root. Si le serveur est neuf, commencez par suivre les dix premières minutes sur un nouveau VPS, car les modifications SSH décrites plus loin sont plus simples une fois l’utilisateur et le firewall configurés.

sudo apt update && sudo apt install -y tmux mosh
curl -fsSL https://claude.ai/install.sh | bash
claude --version

L’installateur place le binaire dans ~/.local/bin/claude, et claude --version affiche une ligne semblable à 2.1.211 (Claude Code). S’il affiche command not found, ce répertoire ne figure pas encore dans votre PATH : déconnectez-vous, reconnectez-vous, puis vérifiez avec command -v claude. claude doctor affiche les diagnostics d’installation et de configuration sans démarrer de session.

Connectez-vous maintenant une fois depuis un ordinateur portable, avant de dépendre du téléphone. Exécutez claude dans un répertoire de projet et suivez l’invite de connexion. La procédure vous demande d’ouvrir une URL dans un navigateur, puis de recopier un code dans le terminal. Passer d’une application à l’autre sur l’écran d’un téléphone est lent. Faites-le une fois avec un vrai clavier ; les identifiants resteront sur le serveur.

Démarrer Claude Code dans tmux pour qu’une perte de connexion ne l’arrête pas

tmux new -s claude
cd ~/projects/api
claude

Détachez-vous avec Ctrl-b, puis avec d. tmux affiche [detached (from session claude)] et vous rend le shell. Vous pouvez maintenant fermer l’application, perdre le signal ou mettre le téléphone dans votre poche. Le pane continue de s’exécuter.

tmux ls
tmux attach -t claude

tmux ls affiche une ligne par session, par exemple claude: 1 windows (created Thu Jul 30 09:14:02 2026). tmux attach -t claude vous ramène exactement à l’endroit où vous vous étiez arrêté, y compris au milieu d’une modification.

Cela fonctionne parce que tmux exécute son propre processus serveur. Votre shell et Claude Code sont les processus enfants de ce serveur, et non de sshd. Lorsque la connexion SSH se termine, le kernel envoie le signal de raccrochage, SIGHUP, aux processus attachés à cette connexion. Le serveur tmux n’en fait pas partie. Sans tmux, le même verrouillage de l’écran qui interrompt votre connexion arrête Claude Code au milieu d’un appel d’outil. Exécuter Claude Code sur un VPS dans tmux décrit plus en détail l’organisation de la session.

Exécutez tmux sur le serveur, jamais sur le téléphone. Saisir tmux dans une session à laquelle vous êtes déjà attaché affiche sessions should be nested with care, unset $TMUX to force. Si vous forcez l’exécution, vous devrez gérer deux touches préfixes.

Connexion automatique à chaque ouverture de session

Saisir la commande d’attachement sur un clavier tactile devient vite pénible. Ajoutez ceci à la fin de ~/.profile sur le serveur :

if command -v tmux >/dev/null 2>&1 && [ -z "$TMUX" ] && [ -t 1 ]; then
  exec tmux new-session -A -s claude
fi

new-session -A -s claude s’attache à la session nommée claude si elle existe et la crée dans le cas contraire. Une seule commande couvre donc les deux cas. exec remplace le shell de connexion par tmux. Ainsi, quitter tmux ferme la connexion au lieu de vous laisser sur une invite vide. Pour utiliser un shell standard, ignorez le fichier : ssh you@server -t "bash --noprofile".

Placez ce code dans ~/.profile, et non dans ~/.bashrc. ~/.bashrc s’exécute également pour les sessions non interactives. Les transferts de fichiers échouent donc : scp et sftp interprètent la sortie inattendue comme des données de protocole et échouent avec Received message too long. ~/.profile s’exécute uniquement pour les shells de connexion, ce qui correspond à une session SSH interactive.

~/.profile est également l’emplacement où Ubuntu ajoute ~/.local/bin à PATH. Si claude fonctionne juste après la connexion, mais qu’un shell ouvert dans tmux indique command not found, cet ordre d’exécution en est la cause. Démarrez donc tmux depuis un shell de connexion comme indiqué ci-dessus, plutôt que depuis un script qui ignore le profile.

Les deux applications prennent en charge SSH et mosh et stockent les clés dans l’application. La différence concerne l’interface.

Blink Shell fonctionne en ligne de commande. À son invite, vous saisissez ssh you@server ou mosh you@server, avec la même syntaxe que dans un terminal de bureau. Vous ouvrez les paramètres en saisissant config. La section Keys crée une paire pour vous.

Termius fonctionne avec des formulaires. Vous renseignez une entrée d’hôte, puis vous passez cet hôte de SSH à Mosh dans ses détails. Termius intègre sa propre implémentation de mosh et prend en charge mosh 1.3.0 et les versions ultérieures. Le serveur doit donc toujours avoir le paquet mosh installé.

Dans les deux cas, générez la clé dans l’application. Ne copiez jamais une clé privée existante sur le téléphone. L’application affiche la partie publique. C’est la seule ligne que vous ajoutez à ~/.ssh/authorized_keys sur le serveur. Clés SSH par appareil et procédure de révocation explique la convention de nommage et la révocation. Ces étapes sont plus importantes pour un téléphone que pour un ordinateur portable.

Activez le verrouillage biométrique ou par code de l’application de terminal. Sans cette protection, un téléphone déverrouillé donne accès à un shell ouvert sur votre serveur tant que l’écran reste allumé.

Android : Termux

pkg upgrade
pkg install openssh mosh
ssh-keygen -t ed25519 -C "pixel"
cat ~/.ssh/id_ed25519.pub

Termux fournit OpenSSH et mosh dans son propre dépôt. ssh, ssh-keygen et mosh se comportent donc comme sur un poste de travail. Ajoutez la ligne de clé publique affichée à ~/.ssh/authorized_keys sur le serveur, puis connectez-vous avec mosh you@server.

Le clavier à l’écran d’Android ne possède ni touche Échap ni touche Ctrl. Claude Code a besoin des deux. Termux peut afficher sa propre rangée de touches. Ajoutez une ligne dans ~/.termux/termux.properties :

extra-keys = [['ESC','|','/','HOME','UP','END','PGUP'],['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN']]

Exécutez ensuite termux-reload-settings. La rangée apparaît au-dessus du clavier. Le même rechargement prend en compte une police TrueType monospace placée dans ~/.termux/font.ttf.

Android peut arrêter Termux lorsqu’il s’exécute en arrière-plan. Ici, cela vous oblige seulement à vous reconnecter. La session et l’agent se trouvent sur le serveur.

Pourquoi le terminal se fige-t-il quand je quitte le wifi, et que corrige mosh ?

Une connexion SSH est une connexion TCP (transmission control protocol). Une connexion TCP est identifiée par les deux adresses et les deux ports. Lorsque vous sortez de la zone de couverture du wifi, le téléphone reçoit une nouvelle adresse du réseau mobile. L’ancienne connexion ne correspond alors plus à rien sur aucun des deux côtés. Rien ne l’indique. Le terminal cesse simplement de répondre jusqu’à l’abandon de TCP, puis ssh affiche client_loop: send disconnect: Broken pipe. Pour fermer immédiatement une session figée, appuyez sur Enter, puis sur ~, puis sur ..

mosh (mobile shell) supprime ce problème. Il utilise SSH une seule fois pour se connecter et démarrer un processus mosh-server. Il récupère le port UDP (user datagram protocol) choisi par le serveur, puis ferme la connexion SSH. Ensuite, les deux côtés échangent des datagrammes UDP authentifiés avec une clé de session partagée. La session est donc identifiée par cette clé, et non par votre adresse. Une nouvelle adresse permet simplement de poursuivre la session. mosh répercute également votre saisie localement et réaffiche le terminal lorsque le serveur n’est pas d’accord. C’est pourquoi il reste utilisable sur une liaison mobile lente.

mosh utilise un port UDP compris entre 60000 et 61000. Ouvrez donc cette plage :

sudo ufw allow 60000:61000/udp
sudo ufw status

Ouvrir des ports avec ufw présente le reste de la configuration du firewall. Si votre fournisseur propose un firewall réseau distinct dans son panneau de contrôle, ajoutez-y également cette plage. Une règle ufw ne peut pas agir sur un filtre placé en amont de la machine.

Deux problèmes mosh sont fréquents. Une connexion qui réussit, puis se bloque en affichant Nothing received from server on UDP port 60001., indique que la plage UDP est bloquée quelque part entre le téléphone et le serveur. Une connexion qui indique que mosh-server est introuvable signifie que le paquet est absent du serveur ou du PATH de connexion. Installez-le, ou indiquez-le directement avec mosh --server=/usr/bin/mosh-server you@server.

mosh refuse également de s’exécuter lorsque la locale de connexion n’est pas en UTF-8, et l’indique : mosh-server needs a UTF-8 native locale to run. Corrigez la locale sur le serveur, pas sur le téléphone.

locale
sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8

mosh présente deux limites. Son README indique qu’il ne prend pas en charge le transfert X ni les utilisations non interactives de SSH, notamment la redirection de ports. Pour prévisualiser une web app que Claude Code vient de démarrer, vous devez donc toujours utiliser ssh -L 8080:127.0.0.1:8080 you@server. mosh synchronise également uniquement l’écran visible. Il ne possède donc pas de scrollback. Cette seconde limite n’a pas d’incidence ici, car tmux conserve le scrollback : Ctrl-b, puis [ active le copy mode. Faites défiler avec un glissement ou les touches fléchées, puis appuyez sur q pour quitter.

Rendre un écran de téléphone utilisable

Quatre lignes dans ~/.tmux.conf sur le serveur font l’essentiel du travail :

set -g mouse on
set -g status-position top
set -g default-terminal "tmux-256color"
set -g history-limit 20000

mouse on transforme un glissement tactile en défilement et une pression en sélection de panneau ou de fenêtre. Cela remplace la plupart des touches préfixes difficiles à saisir. status-position top déplace la ligne d’état de tmux du bord inférieur, où le clavier à l’écran et sa barre de suggestions la masquent. default-terminal est importante, car sinon tmux annonce un terminal screen à Claude Code. Les couleurs et les caractères de dessin de boîtes sont alors moins bons qu’ils ne devraient l’être. Si tmux refuse ensuite de démarrer avec missing or unsuitable terminal: tmux-256color, l’entrée terminfo est absente : sudo apt install ncurses-term.

Apprenez quatre touches. Le reste devient confortable.

  • Esc interrompt Claude au milieu de sa réponse et conserve le travail déjà effectué. C’est donc la touche à placer le plus près de votre pouce.
  • Ctrl+C interrompt également une opération en cours. À une invite inactive, la première pression efface la saisie et la deuxième quitte Claude Code. C’est donc l’outil le plus radical.
  • Esc deux fois efface un brouillon d’invite. À une invite vide, cette combinaison ouvre à la place le menu de retour en arrière.
  • Pour une invite sur plusieurs lignes, saisissez \, puis appuyez sur Enter. Cette forme fonctionne dans tous les terminaux. Shift+Enter est pris en charge nativement seulement par une courte liste de terminaux de bureau. Les clients mobiles n’en font pas partie.

Évitez les panneaux fractionnés. Un téléphone en mode portrait fait environ 40 colonnes de large. Un fractionnement vertical laisse donc 20 colonnes par panneau, et chaque diff se renvoie à la ligne jusqu’à devenir illisible. Utilisez plutôt les fenêtres tmux : Ctrl-b c en crée une et Ctrl-b n passe à la suivante. Faites pivoter le téléphone en mode paysage lorsque vous devez lire correctement un diff.

Une longue session sur un petit écran pose surtout un problème de contexte. Il est donc utile de lire gérer la fenêtre de contexte de Claude Code avant d’essayer de travailler toute une journée depuis un train.

Verrouillez l’accès : clés uniquement, sans mots de passe

Le téléphone détient maintenant une clé donnant accès à une machine qui modifie votre code et exécute des commandes. Désactivez l’authentification par mot de passe. Un fichier drop-in est plus sûr que la modification directe de sshd_config, car le fichier sshd_config d’Ubuntu inclut /etc/ssh/sshd_config.d/*.conf au début et la première valeur trouvée pour un paramètre est celle qui est utilisée.

sudo tee /etc/ssh/sshd_config.d/99-phone.conf >/dev/null <<'EOF'
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
EOF
sudo sshd -t && sudo systemctl reload ssh

sshd -t analyse la configuration et n’affiche rien lorsqu’elle est valide. Si vous ignorez cette étape, une seule faute de frappe suffit pour que sshd échoue lors du rechargement. Gardez votre session active et testez depuis une deuxième connexion avant de fermer quoi que ce soit, car une clé incorrecte vous donne maintenant Permission denied (publickey). et, avec les mots de passe désactivés, aucun accès de secours. La récupération passe alors par la console de votre fournisseur.

Attribuez une clé distincte à chaque appareil. Si vous perdez votre téléphone, il suffit alors de supprimer une ligne de ~/.ssh/authorized_keys, tandis que votre ordinateur portable continue de fonctionner. Avec une clé partagée, vous devez changer la clé sur tous vos appareils.

Si vous déplacez SSH vers un autre port sur Ubuntu 24.04, notez que le listener appartient à ssh.socket ; une ligne Port seule ne change donc rien. Exécutez sudo systemctl edit ssh.socket, effacez la valeur par défaut avec un ListenStream= vide, puis définissez votre port à la ligne suivante. Durcissement de SSH sur un VPS couvre ce point et le reste de la surface d’attaque.

fail2ban pour SSH apporte peu de sécurité une fois les mots de passe désactivés, car aucun mot de passe deviné ne peut être accepté. En revanche, il permet d’obtenir des logs plus lisibles, ce qui facilite la détection d’une véritable tentative de connexion.

L’option la plus sûre consiste à ne pas exposer SSH à Internet. Placez le serveur derrière un VPN WireGuard que vous hébergez vous-même, activez le tunnel sur le téléphone à la demande et configurez un ListenAddress pour sshd, uniquement sur le tunnel. mosh fonctionne via le tunnel, car les deux côtés utilisent UDP. Attention : le tunnel ajoute une surcharge aux paquets. Si les transferts volumineux se bloquent, réduisez le MTU (maximum transmission unit) dans la configuration WireGuard du téléphone.

Dernier point concernant cette méthode de travail. Depuis un téléphone, vous validez les demandes d’autorisation sur un écran qui n’affiche que quelques lignes de diff à la fois. Cela justifie de conserver les garde-fous, et non de les désactiver. Exécuter Claude Code en toute sécurité sur un VPS présente les limites utilisateur et de répertoire à définir avant que votre principal moyen d’accès soit un écran tactile.

Lorsque vous vous rattachez et qu’un problème survient

tmux attach affiche no server running on /tmp/tmux-1000/default signifie que le serveur tmux a disparu. Cela signifie presque toujours que la machine a redémarré. Vérifiez avec uptime. Les mises à jour de sécurité automatiques de mises à jour de sécurité automatiques redémarrent la machine. Après un redémarrage, la machine n’a plus de session tmux. Considérez donc toute exécution de Claude Code comme redémarrable.

can't find session: claude est différent. Le serveur tmux est en cours d’exécution, mais ce nom n’existe pas. tmux ls affiche les sessions existantes.

Si vous vous attachez et trouvez une simple invite shell à la place de Claude Code, le processus s’est terminé sans que la session se termine. Consultez dmesg -T | tail pour trouver une ligne telle que Out of memory: Killed process 4821 (claude). C’est ce qui se produit lors d’une modification importante sur une machine qui ne dispose pas des 4 GB requis. En l’absence de cette ligne, Claude Code s’est arrêté de lui-même. Le scrollback du shell au-dessus de l’invite contient la cause.

Si une fenêtre réapparaît avec une taille très réduite et un espace inutilisé autour d’elle, deux clients sont attachés avec des tailles différentes. tmux dimensionne une fenêtre selon la taille du plus petit client attaché. Votre ordinateur portable maintient toujours la session à 200 colonnes de largeur, tandis que le téléphone en demande 40. Détachez les autres clients lorsque vous vous attachez : tmux attach -d -t claude.

FAQ

Puis-je exécuter Claude Code directement sur le téléphone plutôt que sur un VPS ?

Non. En juillet 2026, les plateformes prises en charge sont macOS, Windows, Ubuntu 20.04 ou version ultérieure, Debian 10 ou version ultérieure, et Alpine 3.19 ou version ultérieure, avec au moins 4 GB de RAM. Android et iOS n’en font pas partie. Un téléphone met aussi ses applications en veille et change constamment d’adresse réseau, ce qu’une exécution longue d’un agent ne peut pas supporter. Exécutez-le sur un serveur et utilisez le téléphone comme écran.

La session est-elle conservée si je ferme l’application ou si je perds le signal ?

Oui, et deux composants distincts s’en chargent. tmux maintient le processus en cours d’exécution sur le serveur. Ainsi, rien ne s’arrête lorsque la connexion est interrompue. mosh maintient la connexion elle-même lors d’un changement d’adresse. Passer du wifi aux données mobiles ne nécessite donc même pas de se reconnecter. Avec SSH seul et sans tmux, une connexion interrompue envoie SIGHUP et Claude Code s’arrête au milieu de la tâche.

Pourquoi mosh se connecte-t-il, puis n’affiche-t-il rien ?

Une connexion qui réussit, puis se bloque avec Nothing received from server on UDP port 60001. signifie que UDP 60000 à 61000 n’est pas ouvert. Ajoutez cette plage dans ufw, puis ajoutez-la également dans le pare-feu réseau de votre fournisseur, qui est un contrôle distinct dans la plupart des panneaux de gestion. Si mosh indique plutôt que mosh-server est introuvable, le paquet manque sur le serveur : sudo apt install mosh.

Comment interrompre Claude Code au clavier sans touche Esc ?

Ajoutez une rangée de touches. Termux en configure une avec extra-keys dans ~/.termux/termux.properties, et Termius comme Blink fournissent tous deux une rangée que vous pouvez modifier dans les paramètres. Esc interrompt une réponse en cours et conserve le travail déjà effectué. Ctrl+C interrompt également l’exécution, mais si vous appuyez deux fois dessus à une invite inactive, Claude Code se ferme. Utilisez donc d’abord Esc.

L’ouverture de SSH sur Internet est-elle suffisamment sûre ?

Avec l’authentification par mot de passe désactivée, le seul identifiant qui peut fonctionner est une clé qui ne quitte jamais vos appareils. C’est un niveau de risque raisonnable pour une machine que vous pouvez reconstruire. Attribuez une clé distincte à chaque appareil. Ainsi, la perte d’un téléphone vous oblige à ne supprimer qu’une ligne dans authorized_keys. Si vous préférez ne répondre sur aucun port public, placez la machine derrière WireGuard et faites écouter sshd sur l’adresse du tunnel.