Вопрос используя переадресацию x11 с помощью ssh и vnc?


Я работаю над удаленным кластером через ssh с параметром -X, потому что мне нужно визуализировать данные и графики по протоколу vpn. Когда-то из-за нестабильности интернет-соединения я теряю сессию. Они сказали мне, что я могу использовать vnc, чтобы не потерять текущий сеанс, так что, если интернет-соединение падает, я могу снова подключиться и продолжить свой ранее открытый сеанс.

Что я делаю, это войти в удаленный кластер «remote.cluster» и ввести

 vncserver :1

затем я открываю другой терминал в своей системе, и я печатаю

 ssh -C -NL 5901:remote.cluster:5901 myusername@remote.cluster &

Затем я запускаю vinagre в своей системе и подключаюсь с использованием протокола ssh. Проблема в том, что у меня нет пересылки x11, и я не могу открыть окна. Если я пытаюсь подключиться, используя протокол vnc с vinagre, он не подключается, потому что я получаю что-то в качестве таймаута подключения.

Что мне делать?


4
2017-11-21 10:56


происхождения




ответы:


В случае, если мы подключаемся к удаленному X-серверу через VNC, у нас есть преимущество, что графическое приложение будет работать даже тогда, когда соединение SSH с пультом не работает. Затем мы можем снова подключиться, чтобы возобновить графическое приложение. Смотрите также:

Чтобы ускорить повторное соединение, мы можем комбинировать соединение с удаленным компьютером с сеансом SSH, используя VNCviewer из tightvncviewer  Install tightvncviewer с опцией -via, Благодаря этому мы можем работать на удаленном сервере:

vncserver:0  ## or any other display number e.g. :1

установить соединение с зрителем через SSH-туннель:

vncviewer -via user@remote localhost:0

Для этого потребуется значительно больше полосы пропускания, потому что весь рабочий стол должен быть передан с сервера VNC. Поэтому это может быть не очень хорошая идея для соединений с низкой полосой пропускания, но это может дать вам несколько лучший опыт работы с высокими полосами пропускания, но нестабильными соединениями по сравнению с X-переадресацией.


3
2017-11-21 11:54



что я действительно хочу сделать, в ссылке, которую вы предоставляете, что michael_n говорит во втором комментарии к первому ответу, но это не работает для меня, потому что я не могу подключиться к экрану -r, возможно, я делаю что-то не так - simona
Я сделал то, что вы говорите, и vnc запрашивает пароль, который я не задал, поэтому я должен попросить его у администратора удаленного хоста, не так ли? Другое дело: если я использую vnc через ssh, как указано выше в вашем ответе, будет ли он медленным, потому что все графические чертежи будут выполняться на удаленной машине, а не на моей локальной? - simona
Vncviewer -via спрашивает 1) для пароля ssh для пульта, а затем 2) для пароля vnc, но последний только в том случае, если он был установлен на пульте дистанционного управления. Весь чертеж будет выполнен на удаленном сервере, а затем отправлен как сжатый графический файл через туннель ssh (см. Также tightvnc.com/vncviewer.1.php) - Takkat
Спасибо за ваше решение. Поскольку мне было непонятно, когда я прочитал ваше решение, я хотел бы указать будущим читателям, что единственными необходимыми командами являются vncserver: 1 и vncviewer -via user @ remote localhost: 1. Кстати, графическая визуализация очень быстрая, я удивлен, что на самом деле она запускается на удаленном кластере, а не на моей локальной машине - simona
@simona: Спасибо, что указали на это. Надежда с редактированием теперь понятна. - Takkat


Используемая команда:

ssh -C -NL 5901:localhost:5901 myusername@remote.cluster &

forward local 5901 -> remote.cluster: 5901

Поэтому вы можете подключиться к localhost :: 5901, чтобы подключиться к сеансу VNC, запущенному на remote.cluster (к которому у вас нет прямого доступа).

Пересылка X11 отличается от VNC. Вы должны использовать -X, например

ssh -X myusername@remote.cluster

Чем вы сможете запускать удаленные приложения GUI на своем локальном компьютере, при условии, что у вас есть X-сервер, работающий локально (Ubuntu Desktop или Xming в Windows),

Обновить:

Я допустил ошибку в пересылке, это должно быть:

ssh -C -L 5901:localhost:5901 myusername@remote.cluster

Затем вы можете vnc to localhost: 5901, трафик будет перенаправлен на remote.cluster: 5901. Извинение за беспечность ...

Если графический интерфейс не требуется, попробуйте использовать tmux или screen чтобы избежать потери сеанса.


1
2017-11-21 11:21



Я всегда использую ssh -X, и это работает. Дело в том, что я хотел бы настроить эту вещь таким образом, что когда мое соединение упадет, я смогу снова подключиться и снова найти предыдущую сессию. Итак, вы говорите, что я должен использовать протокол vnc в vinagre для подключения к удаленному кластеру? он не работает: я получаю `соединение с хостом remote.host был закрыт ' - simona
Я обновил ответ, я не заметил ошибки в команде пересылки. - Terry Wang
Спасибо, мне не нужен GUI, просто чтобы визуализировать некоторые сюжеты, можете ли вы дать мне отправную точку для экрана или tmux, я ничего не знаю о них - simona
Я лично предпочитаю tmux, вы можете использовать экран или byobu (расширенный экран Ubuntu), похожий. Запуск tmux на удаленном сервере в основном запускает демон / сеанс в этом поле, так что когда вы отключитесь, вы сможете подключиться через SSH и подключиться к этому сеансу - tmux attach, не теряя того, над чем работаете в терминале. Образец .tmux.conf gist.github.com/3950393 - Terry Wang