sandboxed

mostly harmless…

TechTip: Accediendo a VSphere ESX/ESXi mediante SSH con claves públicas

Para aquellos que quieran acceder por SSH mediante clave pública (es decir, sin password) a cualquier servidor VSphere ESX ó ESXi de la rama 3.x/4.x os dejo un pequeño tutorial.

Quizás es uno más de muchos, pero la gracia del asunto es que he intentado resumir los pasos y cubrir varias versiones a la vez. Tenemos dos opciones, según el tipo de ESX que se tercie…


Disclaimer!

Acceder por SSH mediante la clave pública de root conlleva sus riesgos, pues se deja de emplear passwords para autenticarse en los servidores. Si tus máquina cliente no está en una red de confianza o si otras personas no confiables podrían tener acceso local a esta máquina, mejor no usar este método de autenticación. Hay otras formas de hacerlo que permiten reforzar la seguridad, con el uso de SSH-Agent y tokens USB (por ejemplo) pero que están fuera de este artículo.

Quizás en un futuro me plantee extender este tema, ya veremos ;-)


Servidores ESX 3.x/4.x

Será necesario conectarse físicamente al servidor para poder habilitar primero el acceso al servicio SSH.

  • Pulsaremos Alt-F1 para acceder a la consola y entraremos en el sistema con las credenciales de root.
  • Una vez dentro, habilitaremos el acceso y crearemos las claves SSH de root tal como viene a continuación.
    servidorx:~# esxcfg-firewall -e sshServer
    servidorx:~# ssh-keygen -t rsa
    
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx root@servidorx...
  • Editamos el servicio SSH para que root pueda hacer login, y recargamos el servicio SSH de nuevo.
    servidorx:~# vi /etc/ssh/sshd_config
    
    [...]
    PermitRootLogin yes
    [...]
    
    servidorx:~# /etc/init.d/ssh reload
    
  • Ya desde el servidor o cliente que queramos hacer login con autenticación mediante clave pública, copiaremos el archivo /root/.ssh/id_rsa.pub o /root/.ssh/id_dsa.pub (si no lo tuviésemos, podemos generar las claves de root mediante el comando ssh-keygen antes de copiarlo) dejándolo como authorized_keys2 en el servidor ESX destino x.x.x.x/root/.ssh/ para acceder por SSH sin password.
    clientex:~# scp /root/.ssh/id_*.pub x.x.x.x:/root/.ssh/authorized_keys2
    clientex:~# ssh x.x.x.x
    ...
    • Para empezar, hay que habilitar el uso de SSH, conectados físicamente al servidor: según la versión de ESXi variará la forma de hacerlo.

      :::::::: Para ESXi < 4.1 ::

      Pulsaremos Alt-F1 para acceder a la consola, aunque no aparecerá nada en pantalla salvo unas líneas de texto.  Teclearemos tal cual unsupported y pulsaremos Intro.

      Nos preguntará el password de root del servidor directamente y que tendremos que introducir. Una vez y felizmente dentro, hay que descomentar estas líneas de /etc/inetd.conf:

      ~ # vi /etc/inetd.conf
      [...]
      # Remote shell access
      #
      ssh stream tcp  nowait root /sbin/dropbearmulti dropbear ...
      ssh stream tcp6 nowait root /sbin/dropbearmulti dropbear ...
      [...]

      Y entonces habrá que recargar el servicio inetd de nuevo, para lo cual hay dos maneras igual de ilustrativas:

      La primera,más salvaje nos permitirá ver qué servicios están corriendo sobre ESXi en condiciones normales.

      ~ # /sbin/services.sh restart
      Running vmware-aam stop
      Stopping vmware-aam: success
      Running sfcbd-watchdog stop
      [...]
    • La segunda, la fina, la que importa, ‘la favorita’:

      ~ # kill -HUP `cat /var/run/inetd.pid`

      :::::::: Para ESXi => 4.1 ::

      En las nuevas versiones, se puede habilitar directamente desde la consola de gestión estilo NCURSES que muestra ESXi, conectados físicamente al servidor. Hay que pulsar F2, introducir las credenciales y activar felizmente las siguientes opciones de este submenú.

      -- Troubleshooting Options
      Local Tech Support (pulsamos Intro para activarlo)
      Remote Tech Support (pulsamos Intro para activarlo)

      Nada más hay que hacer para activar el servicio SSH: sorprendente, ¿verdad?

    • Queda entonces configurar la autenticación mediante clave pública.Haremos prácticamente lo mismo que hemos hecho en el caso de los servidores ESX, con la salvedad de que no hay directorio /root, y que tampoco podemos generar el par de claves de root desde cualquier servidor ESXi.

      Primero generaremos desde cualquier servidor -no ESXi- el par de claves SSH que copiaremos luego al servidor ESXi destino en tres pasos:

      a) crearemos un par de claves para identificar el usuario root del servidor ESXi ( es decir root@servidorx);
      b) desde el servidor ESXi destino, crearemos el directorio .ssh en la raíz, con los permisos adecuados.
      c) desde el cliente origen copiaremos a servidorx:/.ssh las claves recién creadas, que serán las que identifiquen al usuario root del servidor ESXi en cuestión (root@servidorx).

      clientex:~# ssh-keygen -t rsa -f id_rsa -C root@servidorx
      
      (hacemos login en el servidor ESXi)
      servidorx:~# mkdir .shh; chmod 600 .ssh
      
      (volvemos al cliente de nuevo)
      clientex:~# scp -r id_*.pub x.x.x.x:/.ssh/.
      root@x.x.x.x's password:
      id_dsa             100% |************************|   668       00:00
      id_dsa.pub         100% |************************|   614       00:00

      Hecho esto, generaremos el archivo authorized_keys (ojo, no authorized_keys2) que necesitaremos para poder autenticarnos con la clave pública del usuario root de nuestra máquina cliente:

      clientex:~# scp /.ssh/id_*.pub x.x.x.x:/.ssh/authorized_keys

      Acto seguido, podremos entrar en el servidor sin password como era de esperar:

      clientex:~# ssh x.x.x.x
      You have activated Tech Support Mode.
      
      The time and date of this activation have been sent to the system logs.
      VMware offers supported, powerful system administration tools.  Please
      see www.vmware.com/go/sysadmintools for details.
      
      Tech Support Mode may be disabled by an administrative user.
      Please consult the ESXi Configuration Guide for additional
      important information.
      
      ~ #
    • Espero que haya merecido la pena el viaje hasta aquí. Hasta pronto!

  • Servidores ESXi 3.x/4.x

    De cara a los servidores ESXi es algo más complicado, pues el hipervisor está totalmente integrado en el kernel y no hay consola de servicio. Esto se traduce en que el servicio SSH se proporciona a través de DropBear y no de OpenSSHServer como estábamos acostumbrados hasta ahora.

Etiquetas: , , ,

Posted in tecnología.

4 comments

4 Replies

  1. Gracias, He utilizado el de =>4i y me ha servido de gran ayuda, lo único que en la linea:
    clientex:~# scp /root/.ssh/id_*.pub x.x.x.x:/root/.ssh/authorized_keys

    el /root/.ssh/authorized_keys en realidad es /.ssh/authorized_keys

    De nuevo gracias.

  2. desleido may 3rd 2011

    Gracias! Ya lo he cambiado. Seguro que de aquí a verano tendré que actualizar el artículo, pues en verano debería salir ya la próxima versión de VSphere. Hasta pronto!

  3. Leonardo ago 18th 2011

    Muchas gracias amigo, me fue de gran utilidad esta ayuda.

    Excelente aporte!!!


Leave a Reply