15 votes

Accès à l'environnement utilisateur de termux à partir d'autres consoles

J'ai récemment commencé à utiliser l'incroyable Termux application terminal et environnement linux. Il fournit une multitude d'utilitaires de terminal à fonctions complètes. Il serait formidable de pouvoir accéder à ces utilitaires à partir d'autres consoles, en particulier lorsqu'elles sont connectées par l'intermédiaire de ssh o adb shell . J'ai réussi à rendre une certaine fonctionnalité disponible en définissant mon fichier PATH y LD_LIBRARY_PATH aux mêmes valeurs que celles utilisées par le shell de Termux, mais il y a des problèmes de permissions et cela semble désordonné.

Existe-t-il un moyen de se connecter à une session Termux ? Termux ne semble pas fournir un paquet de serveur ssh. Même si c'était le cas, il est probable que ce serveur, et donc la session ssh accordée par celui-ci, fonctionnerait comme un utilisateur distinct de l'utilisateur Termux, ce qui entraînerait des problèmes de permissions similaires.

Existe-t-il un moyen d'accéder à l'environnement utilisateur de Termux à partir d'autres consoles ?

0 votes

J'ai regardé plusieurs tutoriels et je n'ai trouvé qu'un moyen de me connecter via un câble USB (filaire). Je n'ai pas réussi à trouver comment obtenir une IP sans fil pour le serveur sshd dans Termux. Si quelqu'un a des difficultés à trouver l'adresse IP de votre téléphone, branchez-le sur votre PC (avec un câble USB) et cherchez ensuite la "Route par défaut" sur la nouvelle connexion filaire sur votre PC, c'est la seule façon dont j'ai pu le faire fonctionner. Vous pouvez également avoir besoin de "whoami" et/ou "passwd" dans Termux pour obtenir le nom d'utilisateur. Le port par défaut est 8022. PS : J'ai essayé sshuttle à travers le sshd de Termux et mon FAI le réduit toujours à un pathétique .5 Mbps :-/

0 votes

@PJBrunet qu'avez-vous essayé sur termux pour obtenir l'adresse Ip ?

0 votes

Pour obtenir l'adresse IP d'un périphérique, Linux-Know-How peut vous aider. Pour commencer, je recommande Lpic1.

16voto

fornwall Points 388

Termux fournit le openssh qui contient à la fois le ssh et le sshd serveur.

Installez le paquet avec : apt install openssh puis lancez le serveur avec sshd - il fonctionnera sur le port 8022 par défaut, donc connectez-vous à lui avec ssh -p 8022 DEVICE_IP et vous pouvez trouver l'ip wifi de l'appareil en utilisant ip addr list wlan0 .

L'authentification par mot de passe n'est pas prise en charge, vous devez donc configurer les paramètres suivants $HOME/.ssh/authorized_keys .

Après vous être connecté, vous vous exécuterez en tant qu'utilisateur normal de Termux avec des variables d'environnement correctement configurées.

1 votes

Wow, ils devraient vraiment mentionner cela dans la description du paquet, qui dit juste qu'il s'agit d'un "Secure shell for logging in to a remote machine".

12 votes

L'authentification par mot de passe est prise en charge. Vous devez exécuter passwd pour définir un nouveau mot de passe pour votre serveur SSH. Cependant, ce qui ne fonctionne pas, ce sont les noms d'utilisateur (c'est-à-dire que tout le monde peut se connecter avec chaque nom d'utilisateur avec ce seul mot de passe), AFAIK.

2 votes

Vous pouvez lancer sshd à chaque démarrage en utilisant wiki.termux.com/wiki/Termux:Boot

3voto

Vous devez installer openssh dans termux en exécutant

pkg install openssh

puis, sur l'appareil à partir duquel vous voulez vous connecter, générez une clé d'identification publique,

ssh-keygen

et juste confirmer et ne rien changer, puis faire

cat ~/.ssh/id_rsa.pub

et copier la sortie dans ~/.ssh/authorized_keys et redémarrer le sshd et essayer de ssh,

si vous rencontrez des erreurs, vérifiez le authorized_keys et assurez-vous que votre clé publique est sur une seule ligne.

Vous devez faire ces étapes ci-dessus car Termux sshd ne supporte pas les connexions par mot de passe, (IE, ssh user@ip_address puis en entrant un mot de passe)

vous devez vous connecter à termux en utilisant

ssh termux-ip-here -p 8022

0 votes

L'authentification par mot de passe est désormais prise en charge.

3voto

Michael Hughes Points 31

A genoux et inclinez-vous,

Ip_Address_Of_Remote_Host = 192.168.1.20

(En supposant que vous avez généré une clé sur la machine termux en utilisant

ssh-keygen -t rsa

Il y a un espace entre ssh-keygen et -t et copié la clé sur Remote_Host en utilisant les détails de connexion de cette machine.

ssh-copy-id user@192.168.1.20).

Il y a un espace entre ssh-copy-id et user.

Vous devriez maintenant être en mesure de vous connecter à l'hôte distant sans utiliser de mot de passe.

ssh user@192.168.1.20

La clé rsa générée ci-dessus n'est pas la clé que vous placez dans le fichier authorized_keys sur la machine termux.

Le problème est d'obtenir le

id_rsa.pub

de votre machine distante vers le termux

~/.ssh/authorized_keys

sur le système local (téléphone), la solution que j'ai utilisée était scp, cette commande déroute beaucoup de gens mais si l'on considère qu'il s'agit simplement d'une commande cp, le mysticisme disparaît.

cp fichier_vers_copie où_vers_copie_fichier

Cette commande est exécutée depuis la machine Termux (téléphone)

scp user@192.168.1.20:/home/user/.ssh/id_rsa.pub ~/.ssh/authorized_keys

Il y a un espace entre id_rsa.pub et ~/

Le chemin vers votre répertoire .ssh peut être différent, assurez-vous que c'est le chemin correct que vous entrez dans la commande ci-dessus.

Si vous ne parvenez toujours pas à vous connecter, rendez-vous à l'adresse suivante

Fichier /data/data/com.termux/files/usr/etc/ssh/sshd_config

Activez ces deux paires de clés

ChallengeResponseAuthentication non

PubkeyAuthentication oui

0 votes

Pour toute personne ayant une légère compréhension de SSH, cela devrait être simple. Pour ceux qui ne connaissent pas GNU/Linux, les chemins sont ce sur quoi vous devez vous concentrer. Mon prochain port d'appel est de voir si la redirection X est possible, car cela ouvre la possibilité d'utiliser les outils de productivité sur votre bureau mais d'écrire sur la machine termux, laissez-moi vous dire que vous serez en mesure d'utiliser le logiciel LibraOffice sur la machine termux mais de l'afficher sur le bureau sans décalage/latence, c'est la puissance de GNU/Linux.

2voto

user Points 121

Ce sont des commandes Android à exécuter sur Termux et à configurer un client et un serveur SSH, permettant de se connecter de votre bureau à votre Android et vice-versa. Ceci ne couvre pas la configuration du serveur et du client SSH sur votre ordinateur de bureau.

Utilisation du serveur SSH https://termux.com/ssh.html

apt update
apt upgrade
apt install openssh

Ici, vous pouvez créer un mot de passe pour vos clés et l'utiliser pour vous connecter à votre ordinateur, si vous le souhaitez. un mot de passe. Sinon, laissez-les en blanc et aucun mot de passe n'est requis, à part votre mot de passe de l'ordinateur de l'utilisateur DESKTOP.

Comment puis-je configurer une connexion SSH sans mot de passe ? https://askubuntu.com/questions/46930/how-can-i-set-up-password-less-ssh-login

ssh-keygen -b 4096 -t rsa

Cela vous permet de vous connecter depuis votre Android à votre DESKTOP par connexion SSH sans votre mot de passe d'utilisateur Android (car les mots de passe ne sont pas supportés par le serveur sshd de termux)

3 étapes pour effectuer une connexion SSH sans mot de passe en utilisant ssh-keygen & ssh-copy-id https://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id

ssh-copy-id -i ~/.ssh/id_rsa.pub your_desktop_ssh_user@YOUR.DESKTOP.IP.ADDRESS

Cela vous permet de vous connecter depuis votre DESKTOP à votre Android par connexion SSH sans votre mot de passe d'utilisateur Android (si vous souhaitez utiliser le mot de passe d'utilisateur de votre ordinateur, passez cette commande)

  1. Première option Accès à l'environnement utilisateur de termux à partir d'autres consoles Accès à l'environnement utilisateur de termux à partir d'autres consoles

    scp your_desktop_ssh_user@YOUR.DESKTOP.IP.ADDRESS:~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
  2. Deuxième option Comment ajouter des clés SSH au fichier authorized_keys ? https://askubuntu.com/questions/46424/how-do-i-add-ssh-keys-to-authorized-keys-file

    cat ~/.ssh/id_rsa.pub | ssh your_desktop_ssh_user@YOUR.DESKTOP.IP.ADDRESS "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Scripts et notes pour configurer et utiliser SSHd sur votre appareil Android en utilisant Termux https://github.com/tomhiggins/TermuxSSHDsetup

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ssh ne demande pas de phrase de passe mais la demande est toujours présente. https://serverfault.com/questions/845623/ssh-blank-passphrase-but-still-asking-for-it

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa.pub
chmod 600 ~/.ssh/known_hosts
chmod 600 ~/.ssh/authorized_keys

Démarrez le serveur en exécutant sshd (qui le lancera sur le port par défaut 8022) et exécutez logcat -s 'syslog:*' pour afficher la sortie du journal du processus du serveur. Exécutez pkill sshd pour arrêter le serveur.

logcat -s 'syslog:*'
pkill sshd
sshd

Enfin, la connexion de l'un à l'autre et vice-versa :

Connexion de votre Android à votre DESKTOP (l'utilisation du mot de passe de l'utilisateur du DESKTOP peut être facultative).

ssh your_desktop_ssh_user@YOUR.DESKTOP.IP.ADDRESS

Connexion de votre DESKTOP à votre Android (il ne faut pas utiliser votre mot de passe utilisateur Android)

Puisque Termux est un système mono-utilisateur, vous pouvez vous connecter en tant que n'importe quel utilisateur - sans tenir compte de ce qui suit quel que soit le nom d'utilisateur spécifié, vous vous connecterez comme le seul utilisateur Termux disponible.

Le binaire Termux sshd ne supporte pas les connexions par mot de passe, donc une clé doit être autorisée en ~/.ssh/authorized_keys avant de se connecter. Utilisez ssh-keygen pour en générer une nouvelle si vous le souhaitez.

ssh -p 8022 -i ~/.ssh/id_rsa IP.OF.YOUR.ANDROID

(Android) Si vous avez toujours des difficultés à vous connecter, allez dans le dossier et activez ces deux paires de clés : /data/data/com.termux/files/usr/etc/ssh/sshd_config

ChallengeResponseAuthentication no
PubkeyAuthentication yes

Extra : Verrouillage et déverrouillage du système de fichiers de la lecture seule à la lecture-écriture et vice-versa.

Comment copier des fichiers dans le répertoire de données d'un émulateur Android avec "adb push" ? https://alvinalexander.com/Android/how-copy-files-Android-device-emulator-adb-push-read-only-error

mount -o rw,remount rootfs /

Revenir en arrière après avoir terminé les modifications !

cat /proc/mounts
mount -o ro,remount rootfs /

0voto

林果皞 Points 253

Comme alternative, je construis termux et ensuite adb shell pour accéder à la console termux depuis PC sans exiger de Racine.

Le préfixe ci-dessous de [PC]~ $ , [ADB]~ $ y [ADB's BASH]~ $ indique d'où provient le type de commande.

  1. Dans les paramètres d'Android, activez Options pour les développeurs pour activer Débogage USB et désinstaller l'application termux existante pour tous les utilisateurs. Et bien sûr, les données termux existantes seront perdues.
  2. Cloner le code source de Termux, [PC]~ $ git clone https://github.com/termux/termux-app
  3. Ouvrez ce projet dans Android Studio, branchez le câble du téléphone, sélectionnez le périphérique du téléphone dans le menu, puis exécutez-le directement ou construisez-le en tant qu'apk de débogage, ce qui vous permettra de l'utiliser. run-as sans Racine.
  4. [PC]~ $ adb shell
  5. [ADB]~ $ run-as com.termux
  6. [ADB]~ $ cd files/usr/bin
  7. Si ce n'est pas encore le cas, installez bash y vim soit aller sur l'appareil Android pour l'installer, soit [ADB]~ $ export PATH=/data/data/com.termux/files/usr/bin:$PATH d'abord puis pkg install bash y pkg install vim .
  8. ./bash pour lancer la session du shell bash.
  9. [ADB's BASH]~ $ vim ~/.bashrc et mettez ces 2 lignes qui définissent l'environnement lors du lancement d'une nouvelle session bash : PATH=/data/data/com.termux/files/usr/bin:$PATH y export LD_PRELOAD=/data/data/com.termux/files/usr/lib/libtermux-exec.so
  10. [ADB's BASH]~ $ . ~/.bashrc pour prendre effet immédiatement.
  11. Utilice rsync commande, par exemple [ADB's BASH]~ $ rsync -rvtP --remove-source-files source_dir foo@IP:/home/foo/Downloads/ pour transférer des fichiers entre Android et le PC. (Note : Le répertoire source ne doit pas être suivi de / et ont besoin find source_dir -type d -empty -delete après l'avoir fait pour supprimer les répertoires vides) . Alternativement, utilisez [PC]~ $ adb exec-out run-as com.termux cat '/data/user/0/com.termux/.bashrc' > ~/Downloads/.bashrc pour transférer un fichier d'Android vers un PC.
  12. Pour démissionner, Ctrl+D o [ADB's BASH]~ $ exit . [ADB]~ $ ./bash pour entrer à nouveau dans la nouvelle session bash.
  13. Pour une raison inconnue, la première fois l'accès ne sera pas internet, vous devez lancer l'application termux dans l'appareil Android manuellement une fois, après cela peut quitter l'application termux.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X