Daniel López Azaña

Tema

Social Media

Blog

GNU/Linux, Open Source, Cloud Computing, DevOps y más...

Control remoto de Linux desde tu smartphone con botones y widgets SSH

hot-button-ssh-command-widget-iconEn este artículo voy a hablar de una app para Android que es extremadamente útil para ejecutar comandos de forma remota en un ordenador Linux : Hot Button SSH Command Widget. Esta aplicación nos permitirá lanzar cómodamente cualquier comando que se nos ocurra en un ordenador remoto a través de SSH con sólo pulsar un botón en la pantalla de nuestro móvil o tablet , lo cual no sólo nos facilitará la automatización de tareas repetitivas, sino que además resulta muy interesante desde el punto de vista de la seguridad por los mismos motivos que expuse en mi artículo Desbloqueo automático de pantalla por proximidad de dispositivo Bluetooth, ya que nos permitirá por ejemplo bloquear y desbloquear la pantalla sin tener que escribir nuestra contraseña una y otra vez a la vista de otras personas.

Aplicación Hot Button SSH Command Widget

Este tipo de apps (también disponibles para iOS) se pueden usar también para ejecutar comandos sobre sistemas Mac OS X y Windows si tienen el servicio SSH disponible. Lectura recomendada: Cómo crear un servidor SSH Windows.

Hay otras apps que también permiten asociar acciones a botones para ejecutar distintos comandos SSH desde nuestro dispositivo móvil, pero ésta en concreto permite también poner dichos botones como widgets en el lanzador de aplicaciones de Android (launcher) , por lo que no tendremos que abrir previamente ninguna aplicación para poder lanzar los comandos que queramos, lo cual nos ahorarrá ese paso y nos permitirá lanzar comandos más rápidamente.

Básicamente lo que ofrece esta app es la posibilidad de crear hasta 30 botones distintos y asociarles un comando que se ejecutará en el ordenador remoto del mismo modo que si usáramos la opción de ejecutar un comando remoto que ofrece el cliente genérico de ssh:

$ ssh user@remote_server "uname -a" 
Linux remote_server 4.4.0-79-generic #100-Ubuntu SMP Wed May 17 19:58:14 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

La aplicación permite configurar tanto el ordenador remoto al que lanzaremos el comando como las credenciales de acceso que utilizaremos, de forma que no se nos pida usuario y contraseña cada vez que pulsemos un botón. También se permite la autenticación mediante claves RSA (en realidad cualquier tipo de clave pública que acepte el servidor remoto al que queremos conectar). Para ello tendremos que generar una clave privada y copiarla en algún lugar de la sdcard de nuestro teléfono en el que pase desapercibida, con un nombre que no llame la atención y a ser posible en una carpeta cuyo nombre comience con punto (.) para que esté oculta.

Después añadiremos la clave pública emparejada con nuestra clave privada al fichero ~/.ssh/authorized_keys del ordenador remoto, y así conseguiremos que nuestros comandos se ejecuten instantáneamente en cuanto pulsemos el botón deseado.

Algunas ideas de comandos útiles que lanzar desde nuestro móvil

A continuación dejo algunas ideas de botones que pueden resultar interesantes para controlar a distancia nuestro propio PC si nos encontramos lejos de nuestro lugar de trabajo y también aunque estemos cerca pero la pantalla se encuentra bloqueada o el monitor apagado. Así nos ahorraremos esos segundos extras que le lleva el monitor reactivarse y a nosotros introducir la contraseña para desbloquear la pantalla:

Acción deseadaEjemplo comando
Entrar en suspensiónsudo /bin/systemctl suspend
Apagar ordenadorsudo /bin/systemctl poweroff
Reiniciar ordenadorsudo /bin/systemctl restart
Desbloquear pantallasudo loginctl unlock-sessions (Plasma Desktop 5) gnome-screensaver-command -d (Gnome) cinnamon-screensaver-command -d (Cinnamon) mate-screensaver-command -d (Mate Desktop) pkill xscreensaver (otros gestores de ventanas)
Audio mute/unmuteamixer -q -D pulse sset Master toggle

Otros ejemplos de comandos que podemos ejecutar en nuestro ordenador local:

  • Comenzar/detener grabación de vídeo desde nuestra webcam con el fin de vigilar el entorno de trabajo cuando no estemos presentes
  • Controlar el reproductor de música
  • Cambiar nuestro estado en nuestro cliente de chat favorito
  • Etc.

Ejecución de comandos que requieren privilegios de root

Como se puede ver en la tabla del apartado anterior, hay comandos que requieren privilegios de root para poder ejecutarse. Aunque la app tiene una opción de configuración para ejecutar comandos como root, yo prefiero por cuestiones de seguridad deshabilitar siempre el acceso por SSH al usuario root. Así, creo que la forma más recomendable de ejecutar comandos que requieren root es añadir una entrada al fichero sudoers que permita su ejecución mediante sudo sin que se nos pida contraseña. En el caso de los ejemplos anteriores habría que añadir las siguientes líneas:

daniloaz ALL=(ALL) NOPASSWD:/bin/systemctl poweroff,/bin/systemctl halt,/bin/systemctl reboot,/bin/systemctl suspend           
daniloaz ALL=(ALL) NOPASSWD:/bin/loginctl lock-sessions,/bin/loginctl unlock-sessions

Otras ideas interesantes

Esta app también nos puede servir para automatizar algunas acciones que de otro modo nos obligarían a tener que establecer conexiones manualmente con servidores remotos con cierta frecuencia.

Algunos ejemplos:

  • Parar y arrancar alguna aplicación que se queda colgada frecuentemente hasta que encontremos una solución definitiva que solucione el problema.
  • Recibir una notificación push en el móvil con la salida de un determinado comando.
  • Reiniciar un servidor que se ha quedado colgado debido a un aumento desproporcionado y anómalo de la carga.
  • Limpiar cachés que se llenan con frecuencia.
  • Implementar un mecanismo de autenticación multifactor (MFA).
  • Etc.

¡El límite es tu imaginación! ¿Se te ocurre algún ejemplo más?

Daniel López Azaña

Sobre el autor

Daniel López Azaña

Emprendedor tecnológico y arquitecto cloud con más de 20 años de experiencia transformando infraestructuras y automatizando procesos.

Especialista en integración de IA/LLM, desarrollo con Rust y Python, y arquitectura AWS & GCP. Mente inquieta, generador de ideas y apasionado por la innovación tecnológica y la IA.

Artículos relacionados

Ctrl+S

Desbloquear la línea de comandos de Linux tras pulsar Ctrl+s en Bash

Dado que la combinación de teclas Control+s es muy utilizada como atajo para la opción de Guardar ficheros en aplicaciones gráficas como editores de texto, editores de imágenes, navegadores web, etc. a veces nos traiciona el subconsciente cuando estamos trabajando desde la línea de comandos de Linux y utilizamos esa misma combinación de teclas cuando estamos por ejemplo editando un documento con Vim con la intención de guardarlo. A partir de ese momento observamos que ninguna tecla responde, la shell se ha bloqueado y ya no podemos hacer nada más en ella y nos entra un sudor frío porque no podemos acceder al documento que estábamos editando y no podemos salvar los cambios.

27 de abril de 2017
Linux disk partition

La importancia de particionar correctamente un disco en Linux

Soy un firme defensor de la simplicidad y del principio de que menos es más, pero en cuanto a la seguridad y el rendimiento de los sistemas de información se refiere, debemos ser capaces de encontrar un equilibrio entre mantener las cosas sencillas y exponernos lo mínimo posible a potenciales amenazas al mismo tiempo que tratamos de obtener las máximas prestaciones de los elementos que configuran nuestro sistema.

15 de marzo de 2016
linux-penguin-inside-a-box-tar-gz

Los 15 comandos Linux más útiles para mantener sistemas de ficheros

Una de las tareas más frecuentes y tediosas del administrador de sistemas es evitar que se llenen los sistemas de ficheros de una máquina, pues cuando un servidor se queda sin espacio las consecuencias son impredecibles. Dependiendo de cómo esté estructurado el sistema de ficheros raíz de dicha máquina y de la división entre distintas particiones o volúmenes que hayamos establecido, dichas consecuencias serán más o menos graves, pero en cualquier caso indeseables.

1 de octubre de 2014

Comentarios

Javier Ojanguren Otazua 14 de diciembre de 2019
Hola: buen articulo ,quiero compartir contigo que una buena aplicación para control de ordenadores a distancia es telegram , ya que con esta aplicación puedes controlar sistemas linux , sin necesidad de resolver las ips , lo que agiliza enormemente la tarea, entre otras muchas cosas que se puede hacer. Un saludo

Enviar comentario