У вас есть ESXi (любой гипервизор) на котором запущены виртуальные серваки? Иногда бывает так, что нужен доступ к реальной консоли сервера и не всегда есть возможность использовать консоль vmware. Если решение вам интересно читаем дальше.
VNC
Прежде всего, на ESXi можно запустить виртуальную машину, которая будет доступна через VNC. Мы сразу же можем подключиться к виртуальной машине с помощью любого VNC-клиента. Но это не наш путь.
Давайте для начала изменим настройки виртуальной машины. Выбираем виртуальную машину -> Edit Settings -> Options -> General -> Configuration Parameters и добавляем 3 параметра:
RemoteDisplay.vnc.enabled = [true|false] - включаем vnc
RemoteDisplay.vnc.port = [port #] - порт, на котором виртуальная машина будет доступна
RemoteDisplay.vnc.password = [optional] - пароль к VNC
Если вы используете ESXi 5 версии, то вам еще нужно будет открыть порт на фаерволе этого гипервизора. Сделать это не так легко, как кажется на первый взгляд. Включаем SSH и создаем новый xml файл, с описанием нового правила для фаервола в /etc/vmware/firewall:
<!--rewall configuration information for VNC -->
<ConfigRoot>
<service>
<id>Habra</id>
<rule id='0000'>
<direction>inbound</direction>
<protocol>tcp</protocol>
<porttype>dst</porttype>
<port>5901</port>
</rule>
<rule id='0001'>
<direction>outbound</direction>
<protocol>tcp</protocol>
<porttype>dst</porttype>
<port>
<begin>0</begin>
<end>65535</end>
</port>
</rule>
<enabled>true</enabled>
<required>false</required>
</service>
</ConfigRoot>
После этого обновим конфиг фаервола и посмотрим, появился ли наш новый сервис:
/etc/vmware/firewall # esxcli network firewall refresh
/etc/vmware/firewall # esxcli network firewall ruleset list | grep Habra
Habra true
Основная проблема в том, что если сейчас ESXi перезагрузить, то нашего нового правила не будет. Самое простое решение скопировать XML-ку на storage, к которому у хоста есть доступ, а на самом хосте добавить в /etc/rc.local:
cp location-of-xml-file /etc/vmware/firewall
esxcli network firewall refresh
Если вы хотите более правильное решение, то можно почитать тут.
Теперь ко всем нашим виртуальным машинам есть VNC доступ. Далее будем делать одну точку доступа ко всем серверам, используя Guacamole
Guacamole
С помощью Guacamole вы можете получить доступ к консоли своих серверов из любого браузера, который поддерживает: HTML5 и AJAX
Guacamole умеет работать с VNC и RDP. Установку можно производить на Debian, Ubuntu, Fedora
Установка Guacamole не составит большого труда. Примеры для Ubuntu. Установим зависимости:
sudo apt-get install tomcat6 libvncserver0 libfreerdp1 libvorbisenc2
Последнюю версию можно найти на сайте продукта:
wget http://switch.dl.sourceforge.net/project/guacamole/current/binary/ubuntu-12.04-amd64/guacamole-0.7.2-ubuntu-12.04-amd64.tar.gz
tar -xzf guacamole-0.7.2-ubuntu-12.04-amd64.tar.gz
cd guacamole-0.7.2-ubuntu-12.04-amd64
sudo dpkg -i *.deb
Если все сделали правильно, то зайдя на myip:8080/guacamole/ увидим окно ввода логина и пароля. Схема аутентификации по умолчанию читает все настройки из файла конфигурации /etc/guacamole/user-mapping.xml
<user-mapping>
<authorize username="User1" password="userpassword">
<connection name="Server1">
<protocol>vnc</protocol>
<param name="hostname">192.168.0.10</param>
<param name="port">5902</param>
<param name="password">VNCPASS</param>
</connection>
<connection name="Server2">
<protocol>vnc</protocol>
<param name="hostname">192.168.0.10</param>
<param name="port">5901</param>
<param name="password">VNC</param>
</connection>
</authorize>
</user-mapping>
где hostname — это адрес вашего esxi хоста, password — пароль для VNC.
Теперь логинимся под пользователем User1 и подключаемся к вашим виртуальным серверам. Чтобы открыть виртуальную клавиатуру нажимаем: Ctrl+Alt+Shift