Я намагаюся запустити gedit
з терміналу SSH в Windows, підключеного до екземпляра Amazon EC2, на якому працює сервер Ubuntu 12.04, і я отримую цю помилку:
Cannot open display:
Як це виправити?
Я намагаюся запустити gedit
з терміналу SSH в Windows, підключеного до екземпляра Amazon EC2, на якому працює сервер Ubuntu 12.04, і я отримую цю помилку:
Cannot open display:
Як це виправити?
Відповіді:
Оскільки ви використовуєте Windows на своїй стороні, вам знадобиться SSH-клієнт, який запускає локальний сервер X в Windows, щоб віддалено запускати графічні програми з сервера на екрані.
З досвіду я рекомендую безкоштовний MobaXTerm, який має цю функціональність. Скачайте його та спробуйте:
Якщо ви отримуєте якісь помилки, це тому, що іноді може бути встановлено мінімальне зображення сервера, щоб дозволити переадресацію X в нього. У такому випадку, будь ласка, прокоментуйте, і я допоможу вам це вирішити; Я робив це з великою кількістю мінімальних 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-сервер (деякі без потреби в GUI не запускають 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-System aka X11. Це шар для забезпечення мережевого та базового графічного інтерфейсу, на якому Unity, Gnome, KDE тощо можуть будуватися.
Ви можете бачити, скільки дисплеїв має дана машина та які цифри використовуються, запустивши for x in /tmp/.X11-unix/X*; do echo ":${x##*X}"; done
на відповідній машині. Ви можете використовувати екрани хостів з будь-якої машини в одній мережі, встановивши DISPLAY
відповідну зміну відповідно до DISPLAY=hostname:0.0
. Ssh робить це для вас розумним чином, якщо ви надаєте -X
можливість.
* Примітка: я припускаю, що існує кращий спосіб, ніж цей цикл for.
Використовуйте текстовий редактор оболонки. vi
, vim
, nano
І emacs
є найбільш поширеними і буде встановлений і працює , по крайней мере один з них. З них nano
є найпростішим і найбільш пояснювальним.
for
петлевий bit..it тепер буде показувати адресу відображення тільки наприклад :0
:0.0
. Не соромтеся повернутись назад, якщо ви думаєте, що це не те, що ви хочете ..
Про те, що говорилося про використання .
В основному у вас є термінал через SSH, а Gedit - це програма GUI. Відповідь con-f-use змусить його працювати з клієнтською сесією Linux GUI.
Іншим варіантом буде використання такого редактора, який не використовується GUI, наприклад, nano, Vi або багатьох інших.