Возникла задача - установить на удалённый Linux-сервер с CentOS 6.2 (далее по тексту будет фигурировать под именем remote.server.com) антивирус Eset NOD32. Linux-версия данного продукта имеется, но, к сожалению, установщик представляет собой бинарный файл с GUI, основанным на GTK. На сервере, естественно, никаких X-Window System нет и не планируется. Следовательно, нам нужно как-то изловчиться, чтобы графика софтины отрисовывалась на нашей рабочей машинке с монитором, а сама софтина при этом была запущена на удалённом сервере. Последовательность решения задачи следующая:
1. Устанавливаем на сервер пакет xorg-x11-xauth.
2. Переносим Magic-Cookie с localhost-а на сервер с помощью команды:
$ xauth extract - $DISPLAY | ssh remote.server.com 'xauth merge -' xauth: creating new authority file /home/avz/.Xauthority
3. Проверяем, что на сервере в конфиге sshd разрешён X11-Forwarding, если нет – меняем значение на "yes" и перезапускаем ssh-демон:
# grep X11Forwarding /etc/ssh/sshd_config X11Forwarding yes
4. Открываем новую SSH-сессию с ключиком -X и запускаем в ней нужную команду, которая работает с графикой:
ssh -X remote.server.com /home/avz/eset_nod32av_64bit_en.linux
С этого момента программа для взаимодействия с оператором использует монитор, клавиатуру и мышь localhost-а, а другие аппаратные ресурсы (файловую систему, сеть, процессор, память и т.д.) – сервера. Конкретно в моём случае это позволило установить и сконфигурировать антивирус, что было бы невозможно одним только command-line-ом.
Если на localhost-е стоит windows, то аналогичного эффекта можно добиться с помощью Putty и Xming.
P.S. Есть у меня подозрение, что пункт 2 не совсем обязательный, но без него у меня почему-то не работало на одном сервере. А вот на другом - работало и без пункта 2.
Полезные ссылки по теме:
Есть еще xvfb - X Virtual Frame Buffer - тулза для запуска GUI-приложений на headless-серверах. В CentOS пакет называется xorg-x11-server-Xvfb.
Хоть и немного из другой оперы, но тоже по теме.