Получение доступа к графическому интерфейсу пользователя через SSH

Материал из Wiki семьи Белых
Перейти к: навигация, поиск

Подключение программ на удаленной системе к локальному X

Графическое приложение можно запускать не только локально, но и на удаленной системе как на дисплее удаленного компьютера, так и локального. И не только графическое приложение, но и оконный менеджер. Рассмотрим последний случай.
Для этого нужно связать удаленный компьютер и локальные X-ы.
Для простоты удаленный компьютер будем называть сервер, локальный - клиент.
Запускаем X-ы командой xinit, если нужно с параметром.

Ручной способ подключения

Далее с графического терминала (запущенного) указываем X-ам слушать сервер.

Code:
xhost +<сервер> 

Цепляемся к удаленному компьютеру по ssh.

Code:
ssh -XYC <юзер>@<сервер> 

Вводим пароль. Далее говорим куда посылать вывод дисплея

Code:
export DISPLAY=<клиент>:N.0 

где "N" - это номер графической консоли, на которую вы запустили X-ы.

Необходимо, чтобы клиент находился в одной сети с сервером или на шлюзе был настроен проброс портов 6000-6006.

Автоматический способ

В последних версиях SSH стало возможно автоматизировать весь процесс описанный указанный в "Ручном способе подключения"

Code:
ssh -X user@server

Далее запускается нужная вам программа или ваш оконный менеджер.

Подключение по протоколу VNC

1. Устанавливается и настраивается VNC-server
Для доступа к уже запущенному экземпляру X-ов нужен будет пакет x11vnc.

2. Устанавливается соединение с сервером с пробросом удаленного порта на локальный ПК

Code:
ssh -R 127.0.0.1:<VNC_PORT>:127.0.0.1:<VNC_PORT>

3. Далее уже запускается VNC-клиент, с указанием подключиться к 127.0.0.1

Подключение по протоколу RDP по шифрованному соединению

Подключение к MS Windows осуществляется с помощью протокола RDP и его клиента в Linux: rdesktop.

Сам протокол не имеет встроенных механизмов шифрования и сжатию трафика.

Для подключения через небезопасную сеть, программу rdesktop лучше запускать на удаленной linux-машине в той же сети, что и RDP-Server, подключаясь к этой машине через SSH.

Code:
ssh -X user@server "rdesktop -g <your_displey_resolution> -N [-u <user> [-p <password>]] server_rdp"

В случае, если на машине под управлением MS Windows установлен SSH сервер, то можно пробросить RDP порт на локальный ПК через ssh, а уже потом подключаться rdesktop на localhost.

Запускается два терминала:
В первом выполняется подключение к удаленному ssh-серверу с пробросом удаленного порта на локальный ПК.

Code:
ssh -R 127.0.0.1:<3389>:127.0.0.1:<3389> user@server

Во втором терминале произвести подключение к RDP серверу

Code:
rdesktop -g <your_displey_resolution> -N [-u <user> [-p <password>]] 127.0.0.1