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

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

No hay comentarios

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 LinuxHot 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.

hot-button-ssh-commands
hot-button-ssh-widgets
hot-button-ssh-server-configuration
hot-button-ssh-command-configuration

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?



 

Sobre el autor

Daniel López Azaña
Arquitecto de soluciones Cloud

Emprendedor, generador de ideas y mente inquieta. Apasionado de las nuevas tecnologías, especialmente de los sistemas Linux y del software libre. Me gusta escribir además sobre actualidad tecnológica, Cloud Computing, DevOps, seguridad, desarrollo web y programación, SEO, ciencia, innovación, emprendimiento, etc.

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

Artículos relacionados

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.