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

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

1 comentario

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.


Error: Your Requested widget " ai_widget-6" is not in the widget list.
  • [do_widget_area above-nav-left]
    • [do_widget_area above-nav-right]
      • [do_widget_area footer-1]
        • [do_widget id="wpp-4"]
      • [do_widget_area footer-2]
        • [do_widget id="recent-posts-4"]
      • [do_widget_area footer-3]
        • [do_widget id="recent-comments-3"]
      • [do_widget_area footer-4]
        • [do_widget id="archives-4"]
      • [do_widget_area logo-bar]
        • [do_widget id="oxywidgetwpml-3"]
      • [do_widget_area menu-bar]
        • [do_widget id="search-3"]
      • [do_widget_area sidebar]
        • [do_widget id="search-4"]
        • [do_widget id="ai_widget-2"]
        • [do_widget id="categories-5"]
        • [do_widget id="ai_widget-3"]
        • [do_widget id="ai_widget-4"]
        • [do_widget id="ai_widget-5"]
      • [do_widget_area sub-footer-1]
        • [do_widget id="text-4"]
      • [do_widget_area sub-footer-2]
        • [do_widget_area sub-footer-3]
          • [do_widget_area sub-footer-4]
            • [do_widget_area upper-footer-1]
              • [do_widget id="search-2"]
              • [do_widget id="recent-posts-2"]
              • [do_widget id="recent-comments-2"]
              • [do_widget id="archives-2"]
              • [do_widget id="categories-2"]
              • [do_widget id="meta-2"]
            • [do_widget_area upper-footer-2]
              • [do_widget_area upper-footer-3]
                • [do_widget_area upper-footer-4]
                  • [do_widget_area widgets_for_shortcodes]
                    • [do_widget id="search-5"]
                    • [do_widget id="ai_widget-6"]
                  • [do_widget_area wp_inactive_widgets]
                    • [do_widget id="wpp-2"]
                    • [do_widget id="text-1"]
                    • [do_widget id="recent-posts-3"]
                    • [do_widget id="categories-3"]
                    • [do_widget id="archives-3"]
                    • [do_widget id="icl_lang_sel_widget-3"]

                  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 deseada Ejemplo comando
                  Entrar en suspensión sudo /bin/systemctl suspend
                  Apagar ordenador sudo /bin/systemctl poweroff
                  Reiniciar ordenador sudo /bin/systemctl restart
                  Desbloquear pantalla sudo 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/unmute amixer -q -D pulse sset Master toggle

                   


                  Error: Your Requested widget " ai_widget-6" is not in the widget list.
                  • [do_widget_area above-nav-left]
                    • [do_widget_area above-nav-right]
                      • [do_widget_area footer-1]
                        • [do_widget id="wpp-4"]
                      • [do_widget_area footer-2]
                        • [do_widget id="recent-posts-4"]
                      • [do_widget_area footer-3]
                        • [do_widget id="recent-comments-3"]
                      • [do_widget_area footer-4]
                        • [do_widget id="archives-4"]
                      • [do_widget_area logo-bar]
                        • [do_widget id="oxywidgetwpml-3"]
                      • [do_widget_area menu-bar]
                        • [do_widget id="search-3"]
                      • [do_widget_area sidebar]
                        • [do_widget id="search-4"]
                        • [do_widget id="ai_widget-2"]
                        • [do_widget id="categories-5"]
                        • [do_widget id="ai_widget-3"]
                        • [do_widget id="ai_widget-4"]
                        • [do_widget id="ai_widget-5"]
                      • [do_widget_area sub-footer-1]
                        • [do_widget id="text-4"]
                      • [do_widget_area sub-footer-2]
                        • [do_widget_area sub-footer-3]
                          • [do_widget_area sub-footer-4]
                            • [do_widget_area upper-footer-1]
                              • [do_widget id="search-2"]
                              • [do_widget id="recent-posts-2"]
                              • [do_widget id="recent-comments-2"]
                              • [do_widget id="archives-2"]
                              • [do_widget id="categories-2"]
                              • [do_widget id="meta-2"]
                            • [do_widget_area upper-footer-2]
                              • [do_widget_area upper-footer-3]
                                • [do_widget_area upper-footer-4]
                                  • [do_widget_area widgets_for_shortcodes]
                                    • [do_widget id="search-5"]
                                    • [do_widget id="ai_widget-6"]
                                  • [do_widget_area wp_inactive_widgets]
                                    • [do_widget id="wpp-2"]
                                    • [do_widget id="text-1"]
                                    • [do_widget id="recent-posts-3"]
                                    • [do_widget id="categories-3"]
                                    • [do_widget id="archives-3"]
                                    • [do_widget id="icl_lang_sel_widget-3"]

                                  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 AWS & Linux Sysadmin Freelance

                                  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, AWSi, DevOps, DevSecOps, 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

                                  1 comentario

                                  Unirte a la conversación
                                  • Javier Ojanguren Otazua - 14/12/2019 responder

                                    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

                                  Deja una respuesta

                                  Tu dirección de correo electrónico no será publicada.