Я пытаюсь работать gedit
с терминала SSH в Windows, подключенного к экземпляру Amazon EC2 под управлением Ubuntu 12.04 Server, и получаю эту ошибку:
Cannot open display:
Как мне это исправить?
Поскольку вы используете Windows на своей стороне, вам потребуется SSH-клиент, который запускает локальный X-сервер в Windows для удаленного запуска графических приложений с сервера на вашем экране.
Исходя из опыта, я бы порекомендовал бесплатный MobaXTerm, в который встроена эта функциональность. Пожалуйста, загрузите его и попробуйте:
Если вы получаете какие-либо ошибки, это потому, что иногда минимальный образ сервера не может быть настроен для разрешения X-forwarding в него. В этом случае, пожалуйста, прокомментируйте, и я помогу вам решить; Я сделал это с множеством минимальных VPS, работающих под управлением Ubuntu / Debian.
Итак, вы подключаетесь с вашего домашнего компьютера (назовем это вашей машиной ) к серверу (назовем это сервером ) через ssh ? Вы хотите запустить программу с графическим окном на сервере через вашу машину? Если это правильно, то непременно читайте дальше.
Давайте назовем программу для запуска, gedit
но процесс одинаков для всех. В зависимости от того, где вы хотите увидеть графическое окно, перейдите к правильному заголовку.
Если вы хотите увидеть и использовать окно gedit на удаленной машине, но запустить на сервере, вам нужно, чтобы ваш сеанс оболочки выглядел так:
user@remote-machine:~$ ssh -X user@server
Last login: Tue Aug 14 13:47:04 2012 from clientXX
*******************************************************************************
M O T D (Message Of The Day)
*******************************************************************************
user@server:~$ gedit .bash_aliases
** (gedit:7851): WARNING **: Could not load theme icon gtk-home: Icon 'gtk-home' not present in theme
(gedit:7851): Gtk-WARNING **: Attempting to store changes
Не обращайте внимания на предупреждения, они нормальные - на экране вашего удаленного компьютера появится окно gedit, как на сервере. Хитрость заключается в том, чтобы использовать опцию "-X", ssh -X
которая включает X-туннелирование и устанавливает DISPLAY
правильную переменную.
Это предполагает, что вы используете SSH-клиент, который поддерживает X11, и на вашем сервере запущен X-сервер (некоторые без графического интерфейса не запускают X-сервер). Особенно на окнах это может быть проблемой , так как большинство окон терминальные программы не имеют X. Как izx заявил MobaXTerm является одним из многих клиентов SSH для окон, имеет X-сервер , хотя.
Однако для сервера без X11 вам придется установить его.
Вы также можете запустить экземпляр на экране вашего сервера, вызвав gedit следующим образом:
ssh user@server
DISPLAY=:0.0 gedit
Вы должны заменить правильное значение вместо того, :0.0
чтобы получить его на правильном X-экране (важно только, если к вашему серверу подключено несколько экранов или если оно несколько своеобразно в своей конфигурации).
Здесь наиболее распространенный сценарий, по которому это не сработает, будет иметь место, если на Сервере отсутствует сервер X11, но к нему не подключен монитор или нет графического интерфейса пользователя, и вы не будете читать это: D.
Я не специалист в этом, но, как я думаю , что это работает, что каждый физический экран, т.е. каждый монитор , подключенный к отдельному компьютеру получает бегущее число в виде 0.0
, 1.0
, 2.0
, ...
Этот номер присваивается системой X-Window aka X11. Это слой для обеспечения сети и базового графического интерфейса, на котором могут основываться Unity, Gnome, KDE и тому подобное.
Вы можете увидеть, сколько дисплеев имеет данный компьютер и какие номера используются, запустив for x in /tmp/.X11-unix/X*; do echo ":${x##*X}"; done
данный компьютер. * Затем каждый компьютер, который настроен для обеспечения доступности экранов и запуска X-сервера, имеет имя хоста. Вы можете использовать экраны хостов с любого компьютера в той же сети, установив свою DISPLAY
переменную в соответствии с DISPLAY=hostname:0.0
. Ssh сделает это за вас разумным способом, если вы предоставите -X
опцию.
* Примечание: я полагаю, есть лучший способ, чем этот цикл for.
Используйте текстовый редактор оболочки. vi
, vim
, nano
И emacs
являются наиболее распространенными и будет установлен и работает , по крайней мере один из них. Из них nano
самый простой и понятный.
for
немного изменил цикл. Теперь он будет отображать только адрес дисплея, например:0
:0.0
. Не стесняйтесь вернуться назад, если вы думаете, что это не то, что вы хотите ..Что сказал контрафакт .
В основном у вас есть терминал через SSH, а Gedit - это программа с графическим интерфейсом. Ответ con-f-use заставит его работать из сеанса клиента Linux с графическим интерфейсом.
Другой вариант - использовать редактор без графического интерфейса, такой как nano, Vi или многие другие.
источник