SSD Nodes Learn Hosting plans →
Guides Matt ConnorPar Matt Connor

Tailscale et Termux : ce qui marche sans root sur Android

Sans root, visez l'app Tailscale et Termux comme client SSH. Accès au VPS, sshd sur le port 8022, limites de tailscaled : ce qui marche et ce qu'il faut tester.

Tailscale dans Termux sans root : la réponse courte

Pour utiliser Tailscale dans Termux sans root, installez l'application Tailscale officielle sur Android et gardez Termux comme simple client SSH. Ne commencez pas par lancer tailscaled, le démon de Tailscale, dans Termux : nous n'avons trouvé aucun paquet officiel, et les résultats varient selon les téléphones. Le travail lourd, tmux et Claude Code, reste sur votre VPS (serveur privé virtuel).

Voici ce que chaque route permet, au 5 novembre 2026 :

  • Du téléphone vers le VPS : c'est la route conseillée. L'application tient le tunnel, et Termux lance ssh vers l'adresse 100.x du VPS.
  • Du VPS ou du PC vers le téléphone : sshd tourne dans Termux sur le port 8022, et vous visez l'adresse Tailscale du téléphone.
  • tailscaled dans Termux : certains utilisateurs le font marcher sans root, d'autres non. Chaque outil doit alors passer par un proxy.
  • Le téléphone comme serveur Tailscale SSH : non. Ce serveur existe seulement pour Linux et pour la version open source en ligne de commande sur macOS.

Une limite à connaître avant de commencer. Toutes les commandes ci-dessous sont à lancer vous-même, sur votre téléphone et sur votre VPS. Nous ne les avons pas exécutées sur un appareil Android, parce que nos conteneurs de test Ubuntu ne reproduisent pas un téléphone. Les pages de Tailscale que nous avons lues ne citent pas Termux. Le premier test de ce guide sert donc à vérifier votre cas réel.

Ce qu'il faut installer sur le téléphone et sur le VPS

Si l'outil est nouveau pour vous, lisez d'abord ce qu'est Tailscale et comment il relie vos machines. Dans ce guide, « tailnet » désigne votre réseau privé Tailscale, c'est-à-dire l'ensemble des machines reliées à votre compte.

Termux. Installez-le depuis F-Droid ou depuis les GitHub Releases du projet (version 0.118.0 ou plus récente). Le README de Termux vise Android 7 ou plus récent. Une version Google Play existe pour Android 11 et plus, mais le projet la décrit comme expérimentale et dit que la plupart des utilisateurs devraient rester sur F-Droid ou GitHub. Ne mélangez pas les sources. Pour changer de source, désinstallez d'abord Termux, parce que les paquets ne sont pas signés avec la même clé.

Tailscale sur Android. La page officielle indique le Play Store. Ouvrez l'application, connectez-vous avec le même compte que sur le VPS, puis acceptez l'invite qui installe une configuration VPN (réseau privé virtuel).

Tailscale sur le VPS. Sur Ubuntu ou Debian :

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
tailscale status

sudo tailscale up affiche une URL. Ouvrez-la pour rattacher le VPS à votre tailnet. tailscale status liste ensuite vos appareils, et la première colonne donne l'adresse Tailscale de chacun. Si l'installation échoue, consultez les erreurs d'installation de Tailscale sur Ubuntu.

Ces adresses commencent par 100 parce que Tailscale les prend dans la plage 100.64.0.0/10. C'est la plage CGNAT (traduction d'adresses au niveau de l'opérateur) définie par la RFC 6598.

Termux atteint-il vos adresses 100.x à travers l'application ?

C'est le premier point à vérifier, parce que tout le reste en dépend. Voici ce que disent les documentations. Android fait passer par le VPN toutes les applications qui ne sont pas sur une liste d'exclusion. L'application Tailscale fonctionne par défaut en mode exclusion : toutes les applications passent par Tailscale, sauf celles que vous excluez. Sa liste d'exclusions fixes contient Android Auto, Google Chromecast, GoPro, la messagerie RCS et Sonos. Termux n'y figure pas.

Sur le papier, Termux devrait donc passer par le tunnel. Aucune page ne le confirme pour Termux, alors testez-le. Dans Termux :

pkg update && pkg install openssh
ssh -v utilisateur@100.x.y.z

Remplacez utilisateur par votre compte sur le VPS et 100.x.y.z par l'adresse donnée par tailscale status. Un résultat sain affiche des lignes debug1, puis vous demande de confirmer la clé du serveur ou de vous authentifier.

Si vous voyez Connection timed out, les paquets n'arrivent pas. Vérifiez dans cet ordre :

  1. L'application Tailscale est bien connectée sur le téléphone.
  2. Aucun autre VPN n'a pris sa place. Android garde un seul VPN actif par utilisateur ou par profil, et démarrer un nouveau VPN arrête le précédent.
  3. Termux n'est pas exclu. Pendant que l'application est connectée, touchez votre avatar, puis App-based split tunneling. Ce réglage demande Tailscale v1.70 ou plus récent.
  4. Le VPS répond à tailscale status et voit le téléphone dans sa liste.

Si vous voyez Connection refused, le paquet arrive bien, mais rien n'écoute sur ce port à cette adresse. Vérifiez alors que le serveur SSH du VPS tourne.

Tailscale occupe cette place unique parce qu'Android le traite comme une application VPN. Si vous voulez la nuance, lisez si Tailscale est vraiment un VPN.

Du téléphone au VPS : SSH, tmux et Claude Code

Notre guide pour piloter Claude Code depuis un téléphone couvre déjà Termux, mais il ne parle pas de Tailscale. La suite reprend à cet endroit. La seule différence est l'adresse : vous visez l'adresse 100.x du VPS, et non son adresse publique.

Créez une clé SSH dans Termux et affichez sa partie publique :

ssh-keygen -t ed25519
cat ~/.ssh/id_ed25519.pub

Copiez cette ligne dans ~/.ssh/authorized_keys sur le VPS. Vous pouvez partager une clé publique sans danger, mais gardez le fichier privé sur le téléphone. Si le serveur répond Permission denied (publickey), suivez notre diagnostic de cette erreur SSH.

Claude Code s'installe sur le VPS, pas dans Termux. Sa page d'installation liste macOS 13.0+, Windows 10 1809+, Ubuntu 20.04+, Debian 10+ et Alpine Linux 3.19+, avec 4 Go de mémoire vive ou plus, sur x64 ou ARM64. Android et Termux ne sont pas sur cette liste. L'authentification accepte un compte Pro, Max, Ultra, Team, Enterprise ou Console, mais aussi les identifiants d'un fournisseur cloud : avec Amazon Bedrock, il faut un compte AWS avec l'accès à Bedrock activé, l'accès aux modèles Claude visés et les permissions IAM adaptées.

Une fois connecté au VPS :

curl -fsSL https://claude.ai/install.sh | bash
claude --version
claude doctor

claude --version doit afficher un numéro de version, et claude doctor contrôle l'installation. Lancez ensuite la session dans tmux :

sudo apt install -y tmux
tmux new -A -s claude
claude

Le drapeau -A est le point important. Si la session claude existe déjà, tmux s'y rattache au lieu d'échouer. Vous gardez donc une seule commande à retenir, pour la première connexion comme pour les suivantes.

Pour quitter sans arrêter le travail, tapez Ctrl-b, puis d. Si le téléphone perd le réseau, SSH tombe, mais la session tmux continue sur le VPS. Reconnectez-vous et relancez la même commande. Pour aller plus loin, voyez Claude Code sur un VPS avec tmux et comment garder une commande active après une déconnexion SSH.

Faut-il activer Tailscale SSH sur le VPS ?

C'est une option. Avec Tailscale SSH, les règles de votre tailnet décident de l'accès, à la place d'un fichier authorized_keys. Un VPS Linux peut jouer le rôle de serveur, et l'on peut s'y connecter depuis un appareil qui exécute Tailscale si les règles réseau et SSH autorisent l'accès. Les appareils doivent appartenir au même tailnet, ou le VPS étiqueté doit être explicitement partagé avec vous. C'est le sens utile pour un téléphone.

Sur le VPS :

sudo tailscale set --ssh

Dans Termux, utilisez ensuite le client habituel :

ssh ubuntu@100.x.y.z

Avant de l'activer, vérifiez ces points :

  • Tailscale prend le port 22. Il le prend sur l'adresse Tailscale, seulement pour le trafic qui vient du tailnet. Ce port n'est pas configurable.
  • Le mode check peut demander une nouvelle connexion. La règle SSH par défaut laisse un utilisateur accéder à ses propres appareils en mode check. Au démarrage, SSH fournit une URL de connexion, et l'authentification se fait sur l'appareil qui lance la connexion. Elle reste valable 12 heures par défaut. La documentation ne décrit pas ce parcours depuis le client ssh de Termux, donc essayez-le une fois sur votre téléphone.
  • L'accès au serveur dépend alors de votre tailnet. Lisez si Tailscale est sûr avant de lui confier cet accès.
  • Certains clients refusent l'absence d'authentification. La documentation propose alors d'ajouter +password au nom d'utilisateur. Vous tapez ensuite n'importe quel mot de passe, car il n'a pas besoin de correspondre au vrai.

Voici la forme de la commande avec ce contournement :

ssh ubuntu+password@100.x.y.z

Du VPS ou du PC vers le téléphone : sshd dans Termux

Ce sens sert à copier des fichiers vers le téléphone, ou à l'administrer depuis un vrai clavier. Tailscale SSH ne peut pas vous aider ici. Sa documentation limite le serveur à Linux et à la version open source en ligne de commande sur macOS, et Android n'y figure pas. Vous utilisez donc le serveur OpenSSH de Termux, avec une connexion SSH normale à travers le tailnet.

Le paquet openssh de Termux change le port par défaut de sshd : il écoute sur 8022 et non sur 22. Le mot de passe se règle avec passwd, fourni par le paquet termux-auth. Il faut le faire avant le premier essai par mot de passe, car cette authentification utilise le fichier ~/.termux_authinfo.

Dans Termux :

pkg install openssh
passwd
whoami
sshd -D -e

whoami donne le nom d'utilisateur à employer. sshd -D -e garde le serveur au premier plan et écrit son journal dans le terminal. C'est pratique pour un premier essai, parce que vous voyez chaque tentative arriver. Le service fourni par Termux lance d'ailleurs la même commande.

Sur le VPS ou le PC, trouvez l'adresse du téléphone et connectez-vous :

tailscale status
ssh -p 8022 utilisateur-termux@100.x.y.z

Remplacez utilisateur-termux par ce que whoami a affiché. Une ligne doit apparaître dans le terminal de Termux, puis le mot de passe vous est demandé. Si rien n'apparaît, le paquet n'atteint pas sshd. Si votre tailnet utilise des règles d'accès personnalisées, vérifiez qu'elles autorisent le port 8022 vers le téléphone. Là encore, aucune page lue ne décrit ce trafic entrant vers Termux : ce test est votre preuve.

Passer aux clés et fermer le mot de passe

Ce réglage compte, parce que le patch de Termux change le port mais ne touche ni ListenAddress ni PasswordAuthentication. Les valeurs par défaut d'OpenSSH s'appliquent : sshd écoute sur toutes les adresses locales, et l'authentification par mot de passe est active. Le service répond donc aussi sur l'adresse Wi-Fi du téléphone. Sur un réseau public, d'autres appareils peuvent essayer de s'y connecter.

Le paquet crée déjà un fichier ~/.ssh/authorized_keys vide. Depuis le VPS, envoyez votre clé :

ssh-copy-id -p 8022 utilisateur-termux@100.x.y.z

Vérifiez que la connexion par clé fonctionne. Ensuite, dans $PREFIX/etc/ssh/sshd_config, écrivez PasswordAuthentication no, arrêtez sshd avec Ctrl-c, puis contrôlez la configuration avant de relancer le serveur :

sshd -T | grep -i passwordauthentication
sshd -D -e

La première commande doit afficher passwordauthentication no.

Lancer sshd comme un service

Le paquet openssh fournit un service, désactivé par défaut par un fichier down. Il a besoin de termux-services :

pkg install termux-services

Redémarrez ensuite le shell, car le démon des services ne démarre qu'à ce moment. Puis lancez sv-enable sshd pour activer le service, ou sv up sshd pour le démarrer une seule fois. Ce service ne règle pas le problème de la section suivante : son README ne parle ni des redémarrages ni des processus tués par Android.

Deux questions que la documentation ne tranche pas

Nous ne donnons pas de réponse à ces deux questions, parce que nous n'avons trouvé aucune source qui les règle. Testez-les sur votre appareil.

Les noms MagicDNS fonctionnent-ils dans Termux ?

MagicDNS enregistre un nom DNS pour chaque appareil du tailnet. Il est actif par défaut sur les tailnets créés depuis le 20 octobre 2022. Sa documentation ne parle ni d'Android ni de Termux. Le test tient en une ligne :

ssh utilisateur@nom-de-la-machine

Si vous obtenez Could not resolve hostname, le nom n'a pas été résolu dans Termux. L'adresse 100.x reste alors votre solution. Commencez toujours par elle : un échec sur l'adresse parle du tunnel, et un échec sur le nom seul parle du DNS.

Qu'est-ce qui garde sshd actif quand Android arrête Termux ?

Nous n'avons pas de réponse sûre. Le README de Termux explique le risque : à partir d'Android 12, le système tue les processus « fantômes » au-delà d'une limite de 32, comptée pour toutes les applications ensemble. Il tue aussi les processus qui consomment trop de CPU. Vous pouvez alors voir ce message :

[Process completed (signal 9) - press Enter]

Le même README demande de désactiver l'optimisation de batterie pour l'application, et renvoie vers dontkillmyapp.com pour les réglages selon le fabricant. Termux fournit aussi la commande termux-wake-lock, qui prend un verrou pour empêcher le CPU de se mettre en veille. Ce verrou vise la veille du CPU. Rien de ce que nous avons lu ne dit qu'il protège sshd contre la limite des processus.

Le test reste simple. Appliquez ces réglages, lancez sshd, éteignez l'écran, attendez une durée réaliste pour votre usage, puis connectez-vous depuis le VPS. Le résultat vaut pour votre modèle de téléphone, et pas forcément pour un autre.

Et tailscaled directement dans Termux ?

Cette route existe, mais elle demande plus d'effort et elle ne marche pas partout. Voici l'état des paquets au 5 novembre 2026 :

  • L'issue #10166 de termux-packages, ouverte le 7 avril 2020, est toujours ouverte.
  • La PR #22980, qui proposait un paquet pour root, a été fermée sans fusion le 12 février 2025.
  • Les chemins packages/tailscale et root-packages/tailscale de termux-packages renvoient une erreur 404, comme tur/tailscale dans le dépôt communautaire TUR.

Nous n'avons pas fouillé tous les dépôts. La conclusion exacte est donc : aucun paquet officiel trouvé à ces emplacements. Il vous faudrait un binaire compilé par vous ou par un tiers.

Les retours de cette issue sont des témoignages d'utilisateurs, pas une liste de compatibilité. Certains disent que le mode espace utilisateur marche sans root, sur Android 10 et 12 par exemple. D'autres échouent, y compris sur Android 14, avec cette erreur :

netmon.New: route ip+net: netlinkrib: permission denied

Au moins un utilisateur dit avoir eu besoin de root pour la dépasser. Le dernier commentaire, daté du 19 avril 2026, décrit un contournement par un patch issu d'un fork de Tailscale. Ce n'est pas un chemin officiel.

Ce que coûte le mode espace utilisateur

Le mode espace utilisateur (userspace networking) sert quand vous ne pouvez pas créer de périphérique de tunnel. La documentation de Tailscale le destine surtout aux environnements serverless. Aucune interface réseau n'apparaît, donc le système ne sait pas router vers le tailnet. tailscaled devient un proxy, et chaque application doit être dirigée vers lui :

tailscaled --tun=userspace-networking --socks5-server=localhost:1055 --outbound-http-proxy-listen=localhost:1055 &
tailscale up --auth-key=<votre-clé>

Le proxy SOCKS5 demande Tailscale v1.8 ou plus récent, et il transporte des connexions TCP ou UDP, pas tous les protocoles IP. Le proxy HTTP demande v1.16 ou plus récent, et il transporte uniquement HTTP et HTTPS. Beaucoup de bibliothèques réseau lisent des variables d'environnement :

ALL_PROXY=socks5://localhost:1055/ HTTP_PROXY=http://localhost:1055/ http_proxy=http://localhost:1055/ ./mon-appli

Le client ssh ne fait pas partie de ces outils : sa page de manuel ne liste aucune variable de proxy. Il lui faut donc une autre méthode. Pour ce cas précis, Tailscale documente tailscale ssh, qui passe par le tailscaled local. La commande tailscale nc peut aussi servir de ProxyCommand :

tailscale ssh utilisateur@100.x.y.z
ssh -o ProxyCommand='tailscale nc %h %p' utilisateur@100.x.y.z

Ces deux lignes supposent que le CLI tailscale fonctionne dans Termux. Aucune documentation officielle ne le garantit. Ajoutez à cela le risque déjà décrit : tailscaled est un processus de Termux, donc Android peut le tuer comme sshd.

Quand cette route vaut-elle la peine ?

Le cas sérieux est un autre VPN qui occupe déjà la place. Android n'en garde qu'un actif par utilisateur ou par profil, et Tailscale confirme qu'il ne peut pas tourner à côté d'un autre VPN sur Android. Le mode espace utilisateur ne crée pas d'interface, donc il n'a pas besoin de cette place.

Posez-vous d'abord une question simple : pouvez-vous couper l'autre VPN le temps de votre session SSH ? Si oui, c'est presque toujours moins coûteux. Gardez tailscaled dans Termux pour le cas où l'autre VPN doit rester actif en permanence, et acceptez alors l'absence de support officiel.

FAQ

Faut-il rooter son téléphone pour utiliser Tailscale avec Termux ?

Non, pas pour l'usage le plus courant. Installez l'application Tailscale officielle pour Android et lancez ssh depuis Termux vers l'adresse 100.x de votre VPS. Android fait passer par le VPN les applications qui ne sont pas exclues, et Termux n'est pas dans la liste d'exclusions fixes de Tailscale. Testez tout de même une connexion, car aucune page officielle ne cite Termux. Le root ne devient un sujet que si vous voulez tailscaled dans Termux, et certains utilisateurs signalent alors l'erreur netlinkrib: permission denied.

Sur quel port se connecter au serveur SSH de Termux ?

Le port 8022. Le paquet openssh de Termux remplace le port par défaut de sshd, qui n'est donc pas 22. Depuis un VPS ou un PC relié au même tailnet, lancez ssh -p 8022 utilisateur@100.x.y.z avec le nom affiché par whoami dans Termux. Définissez d'abord un mot de passe avec passwd pour permettre l'authentification par mot de passe.

Un téléphone Android peut-il être un serveur Tailscale SSH ?

Non. La documentation de Tailscale limite le composant serveur à Linux et à la version open source en ligne de commande sur macOS, et Android n'y figure pas. Le sens inverse fonctionne : on peut se connecter à un serveur Tailscale SSH depuis un appareil qui exécute Tailscale si les règles réseau et SSH autorisent l'accès. Les appareils doivent appartenir au même tailnet, ou le serveur étiqueté doit être explicitement partagé avec vous. Pour joindre le téléphone, utilisez le sshd de Termux à travers le tailnet.

Pourquoi ssh ignore-t-il ALL_PROXY en mode userspace-networking ?

Parce que ALL_PROXY est une convention lue par certaines bibliothèques réseau, et que la page de manuel de ssh ne liste aucune variable de proxy. En mode userspace-networking, aucune interface n'existe, donc une commande ssh normale ne trouve pas de route vers le tailnet. Tailscale documente tailscale ssh pour ce cas. Une directive ProxyCommand qui appelle tailscale nc %h %p est l'autre solution.

Peut-on garder Tailscale et un autre VPN actifs en même temps sur Android ?

Non, pas avec deux applications VPN. Android garde un seul service VPN actif par utilisateur ou par profil, et démarrer un nouveau VPN arrête le précédent. La solution la plus simple consiste à couper l'autre VPN pendant votre session. Si ce n'est pas possible, il reste tailscaled en mode espace utilisateur dans Termux, sans paquet officiel et avec des résultats variables selon les téléphones.

Cet article vous a-t-il été utile ?