15 votos

Accediendo al entorno del usuario de termux desde otras consolas

Recientemente comencé a usar la increíble aplicación de terminal Termux y el entorno linux. Proporciona una gran cantidad de utilidades de terminal de función completa. Sería genial poder acceder a estas utilidades desde otras consolas, especialmente cuando se está conectado a través de ssh o adb shell. He logrado hacer que algunas funcionalidades estén disponibles configurando mis variables de entorno PATH y LD_LIBRARY_PATH con los mismos valores utilizados por el shell de Termux, pero hay problemas de permisos y parece desordenado.

¿Hay alguna manera de conectarse por ssh a una sesión de Termux? Parece que Termux no proporciona un paquete de servidor ssh. Incluso si lo hiciera, presumiblemente ese servidor, y por lo tanto la sesión de ssh otorgada por él, se ejecutarían como un usuario diferente al usuario termux, lo que resultaría en problemas de permisos similares.

¿Existe alguna forma compatible de acceder al entorno de usuario de Termux desde otras consolas?

0 votos

Miré varios tutoriales y solo pude averiguar cómo conectar a través de USB (cableado) tether. No pude averiguar cómo obtener una IP inalámbrica para el servidor sshd en Termux. Si alguien tiene problemas para encontrar la dirección IP de su teléfono, conéctelo a su PC (con cable USB) y luego busque la "Ruta predeterminada" en la nueva conexión por cable en su PC, esa es la única forma en que pude hacerlo funcionar. También es posible que necesite "whoami" y / o "passwd" en Termux para obtener el nombre de usuario. El puerto predeterminado es 8022. PD: ¡Intenté sshuttle a través del sshd de Termux y mi ISP todavía lo reduce a patéticos .5 Mbps :-/

0 votos

@PJBrunet ¿Qué intentaste en termux para obtener la dirección IP?

0 votos

Para obtener la dirección IP de un dispositivo, Linux-Know-How puede ser de ayuda. Como inicio, recomiendo Lpic1.

16voto

fornwall Puntos 128

Termux proporciona el paquete openssh, que contiene tanto el cliente ssh como el servidor sshd.

Instala el paquete con: apt install openssh, luego inicia el servidor con sshd - se ejecutará en el puerto 8022 de forma predeterminada, por lo que conéctate a él con ssh -p 8022 IP_DEL_DISPOSITIVO, y puedes encontrar la dirección IP wifi del dispositivo usando ip addr list wlan0.

La autenticación de contraseña no es compatible, por lo que necesitas configurar $HOME/.ssh/authorized_keys.

Después de conectarte, ejecutarás como el usuario normal de Termux con las variables de entorno configuradas correctamente.

1 votos

Wow, realmente deberían mencionar eso en la descripción del paquete, que solo dice que es un "shell seguro para iniciar sesión en una máquina remota".

12 votos

La autenticación de contraseña es compatible. Necesitas ejecutar passwd para establecer una nueva contraseña para tu servidor SSH. Sin embargo, lo que no funciona son los nombres de usuario (es decir, cualquiera puede iniciar sesión con cualquier nombre de usuario y esa contraseña), que yo sepa.

2 votos

Puedes iniciar sshd en cada arranque usando wiki.termux.com/wiki/Termux:Boot

3voto

Necesitas instalar openssh en termux ejecutando

pkg install openssh

y luego, en el dispositivo desde el que deseas hacer ssh, generar una Clave de Identificación Pública,

ssh-keygen

y simplemente confirmar y no cambiar nada, luego hacer

cat ~/.ssh/id_rsa.pub

y copiar la salida en ~/.ssh/authorized_keys y reiniciar el servidor sshd e intentar hacer ssh,

si encuentras algún error, revisa el archivo authorized_keys y asegúrate de que tu clave pública esté en una sola línea

Tienes que seguir estos pasos porque el sshd de Termux no soporta logins con contraseña, (es decir, ssh usuario@dirección_ip y luego ingresar una contraseña)

tienes que hacer ssh en termux usando

ssh ip-de-termux-aquí -p 8022

0 votos

Autenticación con contraseña AHORA es compatible.

3voto

Michael Hughes Puntos 21

¡De rodillas y postraos,

Ip_Address_Of_Remote_Host = 192.168.1.20

(Suponiendo que has generado una clave en la máquina termux usando

ssh-keygen -t rsa

Hay un espacio entre ssh-keygen y -t y copiaste la clave al Host Remoto usando los detalles de inicio de sesión de esa máquina

ssh-copy-id user@192.168.1.20).

Hay un espacio entre ssh-copy-id y user

Ahora deberías poder iniciar sesión en el host remoto sin usar una contraseña.

ssh user@192.168.1.20

La clave rsa generada anteriormente no es la clave que colocas en el archivo authorized_keys en la máquina termux.

El problema es obtener el

id_rsa.pub

archivo de tu máquina remota a la termux

~/.ssh/authorized_keys

archivo en el sistema local (teléfono) la solución que utilicé fue scp, este comando confunde a mucha gente pero si se ve desde la posición de que es solo un comando cp su misticismo desaparece

cp archivo_a_copiar donde_copiar_archivo

Este comando se ejecuta desde la máquina Termux (teléfono)

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

Hay un espacio entre id_rsa.pub y ~/

La ruta a tu directorio .ssh puede ser diferente, solo asegúrate de que sea la ruta correcta que introduces en el comando anterior.

Si aún tienes problemas para iniciar sesión, navega hasta el

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

Activa estos dos pares de claves

ChallengeResponseAuthentication no

PubkeyAuthentication yes

0 votos

Para cualquier persona con un ligero entendimiento de SSH, esto debería ser sencillo, para aquellos que son nuevos en GNU/Linux, los caminos son en lo que necesitas enfocarte. Mi próxima tarea es ver si el reenvío de X es posible, ya que abre la posibilidad de usar las suites de productividad en tu escritorio pero escribiendo en la máquina termux, déjame explicar, podrás usar el software LibraOffice en la máquina termux pero tenerlo visualizado en el escritorio sin retrasos ni latencia, esta es la potencia de GNU/Linux.

2voto

user Puntos 121

Estos son los comandos de Android para ejecutar en Termux y configurar un cliente y servidor SSH, permitiendo conectar tu escritorio a tu Android y viceversa. Esto no cubre la configuración del servidor y cliente SSH en tu computadora de escritorio.

Usando el servidor SSH https://termux.com/ssh.html

apt update
apt upgrade
apt install openssh

Aquí puedes crear una contraseña para tus claves y usarla para conectarte a tu computadora, si prefieres una contraseña. De lo contrario, déjalas en blanco y no se requieren contraseñas, aparte de la contraseña de usuario de tu computadora de escritorio.

¿Cómo puedo configurar un inicio de sesión SSH sin contraseña? https://askubuntu.com/questions/46930/how-can-i-set-up-password-less-ssh-login

ssh-keygen -b 4096 -t rsa

Esto te permite conectar de tu ANDROID a tu ESCRITORIO por conexión SSH sin necesidad de la contraseña de usuario de tu ANDROID (ya que las contraseñas no son compatibles con el servidor sshd de Termux)

3 Pasos para realizar un inicio de sesión SSH sin contraseña usando 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 tu_usuario_ssh_de_escritorio@TU.DIRECCION.IP.DE.ESCRITORIO

Esto te permite conectar de tu ESCRITORIO a tu ANDROID por conexión SSH sin necesidad de la contraseña de usuario de tu ANDROID (si deseas usar la contraseña de usuario de tu computadora, omite este comando)

  1. Primera Opción Accediendo al entorno de usuario de termux desde otras consolas Accediendo al entorno de usuario de termux desde otras consolas

    scp tu_usuario_ssh_de_escritorio@TU.DIRECCION.IP.DE.ESCRITORIO:~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
  2. Segunda Opción ¿Cómo añado claves SSH al archivo authorized_keys? https://askubuntu.com/questions/46424/how-do-i-add-ssh-keys-to-authorized-keys-file

    cat ~/.ssh/id_rsa.pub | ssh tu_usuario_ssh_de_escritorio@TU.DIRECCION.IP.DE.ESCRITORIO "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Scripts y notas para configurar y usar SSHd en tu dispositivo Android usando Termux https://github.com/tomhiggins/TermuxSSHDsetup

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

Clave de acceso sin contraseña pero sigue pidiéndola 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

Inicia el servidor ejecutando sshd (lo cual lo iniciará en el puerto predeterminado 8022) y ejecuta logcat -s 'syslog:*' para ver la salida del registro del proceso del servidor. Ejecuta pkill sshd para detener el servidor.

logcat -s 'syslog:*'
pkill sshd
sshd

Finalmente, conectándote de uno a otro y viceversa:

Conectar desde tu ANDROID a tu ESCRITORIO (el uso de la contraseña de usuario de tu ESCRITORIO es opcional)

ssh tu_usuario_ssh_de_escritorio@TU.DIRECCION.IP.DE.ESCRITORIO

Conectar desde tu ESCRITORIO a tu ANDROID (no debes usar la contraseña de usuario de tu ANDROID)

Dado que Termux es un sistema de usuario único, puedes conectarte como cualquier usuario, independientemente del nombre de usuario especificado, ingresarás como el único usuario de Termux disponible.

El binario de sshd de Termux no soporta inicios de sesión con contraseña, por lo que una clave debe ser autorizada en ~/.ssh/authorized_keys antes de conectarse. Usa ssh-keygen para generar una nueva si lo deseas.

ssh -p 8022 -i ~/.ssh/id_rsa IP.DE.TU.ANDROID

(ANDROID) Si aún tienes problemas para iniciar sesión, navega al archivo y activa estos dos pares de claves: /data/data/com.termux/files/usr/etc/ssh/sshd_config

ChallengeResponseAuthentication no
PubkeyAuthentication yes

Extra: Bloquear y desbloquear el sistema de archivos de solo lectura a lectura-escritura y viceversa.

Cómo copiar archivos al directorio de datos de un emulador de Android con 'adb push' https://alvinalexander.com/android/how-copy-files-android-device-emulator-adb-push-read-only-error

mount -o rw,remount rootfs /

¡Revierte los cambios cuando termines!

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

0voto

林果皞 Puntos 123

Como una manera alternativa, construyo la aplicación termux y luego utilizo adb shell para acceder a la consola de termux desde PC sin necesidad de ser root.

El prefijo abajo de [PC]~ $, [ADB]~ $ y [ADB's BASH]~ $ indica desde dónde se escriben los comandos.

  1. En la configuración de Android, activa las Opciones de desarrollador, habilita la depuración por USB, y desinstala la aplicación de termux existente para todos los usuarios. Y por supuesto, los datos de termux existentes se perderán.
  2. Clona el código fuente de termux, [PC]~ $ git clone https://github.com/termux/termux-app
  3. Abre ese proyecto en Android Studio, conecta el cable del teléfono, selecciona el dispositivo telefónico del menú, luego ejecútalo directamente o constrúyelo como un apk de depuración que te permitirá usar run-as sin ser root.
  4. [PC]~ $ adb shell
  5. [ADB]~ $ run-as com.termux
  6. [ADB]~ $ cd files/usr/bin
  7. Si aún no tienes instalado bash y vim, ve al dispositivo Android para instalarlos, o primero [ADB]~ $ export PATH=/data/data/com.termux/files/usr/bin:$PATH y luego pkg install bash and pkg install vim.
  8. ./bash para iniciar una sesión de shell de bash.
  9. [ADB's BASH]~ $ vim ~/.bashrc y coloca estas 2 líneas que establecen el entorno al iniciar una nueva sesión de 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 para que tenga efecto inmediato.
  11. Usa el comando rsync, por ejemplo [ADB's BASH]~ $ rsync -rvtP --remove-source-files source_dir foo@IP:/home/foo/Downloads/ para transferir archivos entre Android y PC. (Nota: el directorio de origen no debe terminar con /, y necesitas find source_dir -type d -empty -delete después de terminar para eliminar los directorios vacíos). Alternativamente, usa [PC]~ $ adb exec-out run-as com.termux cat '/data/user/0/com.termux/.bashrc' > ~/Downloads/.bashrc para transferir el archivo de Android a PC.
  12. Para salir, Ctrl+D o [ADB's BASH]~ $ exit. [ADB]~ $ ./bash para volver a entrar en una nueva sesión de bash.
  13. Por razones desconocidas, la primera vez que se accede no habrá internet, necesitarás abrir manualmente la aplicación de termux en el dispositivo Android una vez, después de eso podrás salir de la aplicación de termux.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X