Ejecutar comandos en equipos remotos vía SSH

Hoy vamos a ver como ejecutar a través de ssh comandos en equipos remotos. Esta práctica es de utilidad en el momento que gestionas muchos equipos y dispones de una máquina central para gestionar todos.
A partir de aquí tened en cuenta que es posible automatizar tareas en servidores remotos mediantes scripts, creación de llaves públicas ssh, etc.

El modo de ejecutar los comandos en un servidor remoto sería el siguiente:

$ ssh servidor_remoto comando

Ejemplo (ejecutamos el comando date en el servidor remoto 192.168.0.188 vía ssh a través del puerto 9999):

$ ssh root@192.168.0.188 -P9999 date
stdin: is not a tty
Sun Oct  4 20:15:14 CEST 2009

Si el comando que váis a ejecutar incorpora comillas, tendréis que entrecomillar todo el comando para evitar errores. Si el comando incluye comillas simples, entrecomilladlo con dobles, y si incluye comillas dobles, con simples:

$ ssh root@192.168.0.188 -P9999 'echo "Esto es una prueba"'
$ ssh root@192.168.0.188 -P9999 "echo 'Esto es una prueba'"

Os recomiendo revisar estos dos artículos sobre ssh, hablo sobre la securización del servicio y el acceso sin necesidad de clave:

Login SSH sin password de forma rápida y sencilla

Cómo securizar un servidor SSH

7 comentarios en “Ejecutar comandos en equipos remotos vía SSH

  1. Hola
    quisiera saber que comando ejecutar para apagar varias maquinas con ubuntu, tenia iniciado el servicio ssh
    NOTA. una sola es factible, pero varias al mismo tiempo es la pregunta?
    si alguien sabe, porfavor responda

    • Muy sencillo te haces un script

      #!/bin/bash

      ssh -l root 192.168.0.1 «init 0»
      ssh -l root 192.168.0.2 «init 0»
      ssh -l root 192.168.0.3 «init 0»
      ssh -l root 192.168.0.N «init 0»

    • Puedes meter las ips en un archivo ej.
      192.168.0.1
      172.16.0.1

      192.168.0.254

      Lo llamas por ejemplo ips.txt
      Después con un for le pasas las ips al ssh y le mandas el comando de apagado.

      for i in $(cat ips.txt);do ssh root@$i init 0;done

      Te recomiendo que ya tengas las llaves configuradas a tus equipos desde el equipo central para que ya no te pida password.

      Saludos.

      • Te recomiendo que ya tengas las llaves configuradas a tus equipos desde el equipo central para que ya no te pida password.

        for i in $(cat ips.txt);do sshpass -p «password» ssh root@$i init 0;done

        así ya no te lo pedirá. Pero no es muy seguro que digamos.

Comments are closed.