Ejecutar vSphere Client a través de un tunnel SSH

Vamos a ver los pasos necesarios para conectar a un ESXi a través de vSphere Client de VMware cuando no tenemos conectividad directa con el servidor ESXi por los puertos necesarios para establecer una conexión. Los puertos utilizados por ESXi para el acceso y gestión a través de vSphere Client son el 443, 902 y 903 TCP:

TCP 443

The default port that the vCenter Server system uses to listen for connections from the vSphere Client. To enable the vCenter Server system to receive data from the vSphere Client, open port 443 in the firewall.

TCP 902,903

Ports 902 and 903 must not be blocked between the vSphere Client and the hosts. These ports are used by the vSphere Client to display virtual machine consoles.

Supongamos entonces que tenemos que conectar a un ESXi Host desde un vSphere client que tiene varios firewalls configurados entre los dos extremos, el ejemplo sería el siguiente:

Ejecutar vSphere Client a través de un tunnel SSH

La solución pasa por usar Putty para establecer los tuneles SSH necesarios para saltarnos la restricción de los firewall que están bloqueando los puertos que necesitamos. Digo putty porque de momento el vSphere Client no está disponible en GNU/Linux (en Wine no sé si funciona).

Lo más cómodo es ejecutar putty desde línea de comandos en lugar de la herramienta gráfica. El primer salto lo hacemos del siguiente modo:

C:\>putty.exe -ssh foo@10.0.0.100 -L 443:localhost:11111 -L 902:localhost:11112 -L 903:localhost:11113

En este primer salto mapeamos lo siguiente:

  • 443 local a 11111 de 10.0.0.100
  • 902 local a 11112 de 10.0.0.100
  • 903 local a 11113 de 10.0.0.100

Si os fijáis, no mapeo 443 a 443, 902 a 902, etc porque son puertos inferiores a 1024 y tendría que ser root para hacerlo.

Una vez que ejecutamos ese comando, tendremos una sesión SSH en 10.0.0.100, desde la cual ejecutamos el último tunel SSH:

$ ssh foo@192.168.0.100 \
-L 11111:192.168.0.200:443 \
-L 11112:192.168.0.200:902 \
-L 11113:192.168.0.200:903

Básicamente mapeamos los puertos que hemos creado en el tunel anterior del host en el que nos encontramos contra mismos puertos de 192.168.0.100 y estos contra los puertos finales del servidor ESXi, quedando lo siguiente:

  • vSPhere client (443) -> 10.0.0.100 (11111) -> 192.168.0.100 (11111) -> ESXi Server (443)
  • vSPhere client (902) -> 10.0.0.100 (11112) -> 192.168.0.100 (11112) -> ESXi Server (902)
  • vSPhere client (903) -> 10.0.0.100 (11113) -> 192.168.0.100 (11113) -> ESXi Server (903)

El último paso es añadir el «hostname» del ESXi Server en el fichero «hosts» de nuestro Windows y mapearlo a 127.0.0.1 (C:\WINDOWS\system32\drivers\etc\hosts)

127.0.0.1 ESXi-Server

Con esto en ejecución ya podemos conectar desde vSphere Client al ESXi Server, vCenter, etc:

  • Host: ESXi-Server
  • usuario
  • password