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?
- 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.
- 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: linux, techtip, técnico, vmware
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.
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!
Muchas gracias amigo, me fue de gran utilidad esta ayuda.
Excelente aporte!!!