У меня есть экземпляр ubuntu 13.04 в облаке Amazon EC2. Я пытаюсь запустить некоторые Java-программы на сервере, для которых требуется среда рабочего стола с графическим интерфейсом пользователя. Мне нужен всего 1 экземпляр рабочего стола для подключения через удаленный рабочий стол. Я просто хотел бы иметь возможность повторно подключаться каждый раз, и когда я отключаюсь, я хотел бы, чтобы экземпляр продолжал работать, пока я не подключен, как если бы я ушел от настольного компьютера. Конечно, должна быть возможность формально «выйти из системы» экземпляра, и это завершит мой сеанс рабочего стола, но часто мне нужно, чтобы программы продолжали работать, пока я физически не подключен.
Мне интересно, был ли у кого-нибудь из вас опыт работы с этим, если да, что мне попробовать?
Прямо сейчас у меня работает рабочий стол LXDE, и я могу подключиться через xrdp. Проблема, которую я получаю, БОЛЬШАЯ проблема заключается в том, что среда рабочего стола очень нестабильна. Много раз я отключаюсь без предупреждения и не могу снова подключиться. Также я заметил, что сервер иногда просто автоматически выключает мою java-программу (я все еще пытаюсь выяснить точную причину). Например, только что я вошел в LXDE и запустил свою Java-программу. Через несколько минут RDP отключился, и теперь я не могу повторно подключиться. Возможно, мне придется перезагрузить экземпляр.
Другая проблема, но не такая серьезная, как первая, заключается в том, что каждый раз, когда я повторно подключаюсь через XRDP (при условии, что он не разбился), он автоматически запускает новый сеанс рабочего стола вместо повторного подключения к старому. Это не имеет большого значения, я всегда могу найти идентификатор предыдущего сеанса и отредактировать файл конфигурации через ssh, чтобы принудительно подключиться к этому идентификатору, но это боль и должно быть автоматическим.
Спасибо!
Я запускал сервер VNC на довольно многих серверах, на которых работает графический интерфейс в течение последних пяти лет. Это не идеально, настройка немного неуклюжая, а с точки зрения безопасности она не очень хороша (например, пароли объединяются в 8 символов), но если вам не требуется высокая безопасность, это может быть решением для вас.
Я немного подобрал и в итоге придумал что-то лучше, чем то, что было у меня. Я создал tightvncserver
на облачном сервере EC2, следуя инструкциям из этот учебник.
Тогда я собирался просто подключиться к tightvncserver
через туннель SSH, используя обычное соединение на основе ключей. Для этого, следуя приведенному выше руководству, вы можете подключиться к серверу через SSH, одновременно установив туннель.
ssh -i KeyPair.pem user@<ec2-server-ip> -L 9000:localhost:5901
Затем вам нужно запустить сеанс рабочего стола, но набрав в командной строке SSH-соединения следующее:
tightvncserver :1
Тогда вам просто нужно использовать любой старый клиент VNC для подключения к порту 9000 localhost. Помните, что пароль - это пароль VNC, а не системный пароль Linux:
Мне это нравится намного больше, чем то, что было у меня, потому что 1) существует только 1 сеанс рабочего стола, к которому VNC естественным образом повторно подключается каждый раз. 2) Мне не нужно открывать никакие порты, кроме порта для SSH. Раньше я открывал порт для подключения RDP. Я закрыл это, и теперь только 1 порт прослушивает SSH-соединения.