Apagando los servidores Linux

 Apagando los servidores Linux
Aqui veremos como apagar en remoto los servidores linux
Objetivo: Ejecutando un único script en el servidor principal, apagaremos el resto de servidores linux.

Manos a la obra.

Es importante que el scritp de apagado no nos pida password. Si lo hiciera nunca podríamos automatizarlo (si el día de mañana queremos que se ejecute de forma desatendida ante un aviso de la UPS)
Generamos las claves SSH en el servidor

El servidor principal utilizará SSH para apagar el resto de servidores, o mejor dicho, abrirá una conexión ssh para ejecutar en remoto un script de apagado.

Lo primero que vamos a hacer es crear una clave ssh en la carpeta /root/gakoak (si lo prefieres hazlo en /root/claves, pero en el manual haremos referencia a /root/gakoak). Al crear la clave nos pedirá que introduzcamos una passpharse (clave), pero pulsaremos ENTER (dos veces) sin introducir clave alguna.

    [root@LinuxZerb01]# mkdir /root/gakoak
    [root@LinuxZerb01]# cd /root/gakoak/
    [root@LinuxZerb01 rsync]# ssh-keygen -t dsa -b 2048 -f /root/gakoak/LinuxZerb01-rsync-key
    Generating public/private dsa key pair.
    Enter passphrase (empty for no passphrase): <-- No metas nada, simplemente pulsa ENTER
    Enter same passphrase again: <-- No metas nada, simplemente pulsa ENTER
    Your identification has been saved in /root/gakoak/LinuxZerb01-rsync-key.
    Your public key has been saved in /root/gakoak/LinuxZerb01-rsync-key.pub.
    The key fingerprint is:
    67:9a:c3:27:ea:36:19:46:bd:31:bd:9b:82:4c:83:52  root@LinuxZerb01.niredominioa.com

Con esto hemos creado dos claves: la privada (LinuxZerb01-rsync-key) y la pública (LinuxZerb01-rsync-key.pub).

La privada la guardaremos bien sin dársela a nadie, y la pública la iremos repartiendo por los servidores que queremos configurar. En este caso la copiaremos en el servidor LinuxZerb02 vía scp:

    [root@LinuxZerb01]#  scp LinuxZerb01-rsync-key.pub root@192.168.5.2:/root/

Una  vez copiado, nos conectamos al servidor vía ssh con el usuario root, y ponemos la clave pública en el sitio que le corresponde.

Si no existe la carpeta /root/.ssh la creamos

    LinuxZerb02:~# cd /root
    LinuxZerb02:~#  mkdir .ssh
    LinuxZerb02:~#  chmod 700 .ssh
    LinuxZerb02:~#  mv LinuxZerb01-rsync-key.pub .ssh

Ahora introducimos la clave pública en el fichero authorized_keys. Si no existía, primero lo creamos.

    LinuxZerb02:~#  cd ~/.ssh
    LinuxZerb02:~#  touch authorized_keys
    LinuxZerb02:~#  chmod 600 authorized_keys
    LinuxZerb02:~#  cat LinuxZerb01-rsync-key.pub >> authorized_keys

Repasando: hemos introducido en el fichero authorized_keys la clave pública que previamente habíamos generado. Al hacer esto, y teniendo en cuenta que al general la clave no le hemos asignado password, podremos conectarnos a este servidor desde cualquier otro siempre que dispongamos de la clave privada. De ahí la importanica de proteger bien la clave privada.

Hagamos una prueba. Vamos al servidor principal Linux y lanzamos este comando:

    LinuxZerb01:~#   ssh -i /root/gakoak/ LinuxZerb01-rsync-key 192.168.5.2

Si todo ha ido bien, nos habremos conectado al servidor LinuxZerb02 (192.168.5.2).

Si, pero con esto establecemos la conexión, no apagamos el servidor, verdad ? tranquilo, que ahora viene esa parte.

Estando conectados al LinuxZerb02, vamos a /root y creamos un scritp que se llama itzali.sh (si quieres puedes llamarlo apagado.sh, pero en el manual hacemos referencia a itzali.sh). Puedes utilizar el editor que más te guste, yo lo hago con nano.

    LinuxZerb02:~# cd /root
    LinuxZerb02:~# nano itzali.sh

En el script escribe estas dos líneas:

    #!/bin/bash
    halt

Ahora guarda el fichero y vamos a asignar los permisos adecuados:

LinuxZerb02:~#  chmod 744 itzali.sh

    LinuxZerb02:~#  chmod 744 itzali.sh

Ya está, con esto ya tenemos preparado el script que va a apagar el servidor.

Volvamos al servidor principal (LinuxZerb01).

Antes hemos visto que utilizando las claves pública y privada podemos conectarnos directamente al otro servidor. Utilizando la misma técnica esta vez apagaremos el servidor LinuxZerb02 desde el servidor principal. Cuidado, ten en cuenta que vamos a apagar el servidor !!

    LinuxZerb01:~#   ssh -i /root/gakoak/ LinuxZerb01-rsync-key 192.168.5.2   /root/itzali.sh

Si te fijas verás que es el mismo comando que hemos utilizado antes con la diferencia de que al final le damos el pequeño script de dos líneas que hemos preparado para apagar el servidor. Realmente estamos utlizando la conexión ssh para ejecutar un script remoto.

Ahora tendremos que repetir los pasos para el resto de servidores Linux (LinuxZerb03, LinuxZerb04, LinuxZerb05), y una vez hecho esto preparamos en el servidor principal el script para apagarlos todos, que se llamará SarekoZerbitzariakItzali.sh (puedes llamarlo ApagarServidoresRed.sh, aunque en el manual haremos referencia a SarekoZerbitzariakItzali.sh).

    root@LinuxZerb01:~# cd /root
    root@LinuxZerb01:~# nano SarekoZerbitzariakItzaki.sh

Copiamos estas líneas en el script:


    ssh -i /root/gakoak/ LinuxZerb01-rsync-key  192.168.5.2 /root/itzali.sh
    ssh -i /root/gakoak/ LinuxZerb01-rsync-key  192.168.5.3 /root/itzali.sh
    ssh -i /root/gakoak/ LinuxZerb01-rsync-key  192.168.5.4 /root/itzali.sh
    ssh -i /root/gakoak/ LinuxZerb01-rsync-key  192.168.5.5 /root/itzali.sh

Ahora asignamos los permisos adecuados al scritp:

    root@LinuxZerb01:~# chmod 744 SarekoZerbitzariakItzaki.sh

Ya está, ya tenemos preparado el script para apagar todos los servidores linux