Как запустить графическое приложение на удаленном сервере при входе в систему через SSH?

Вот как я это сделал.

cd /opt
sudo mkdir .cisco
cd .cisco/
sudo mkdir certificates
cd certificates/
sudo mkdir ca

Затем я узнал, какой центр сертификации мы используем, который был COMODO, нашел сайт, который использует этот ЦС, загрузил его в браузер и поместил его в

/opt/.cisco/certificates/ca/ directory

voila!

1
задан 25 April 2015 в 13:15

2 ответа

Итак, вы подключаетесь из своего домашнего компьютера (давайте назовем его вашей машиной) на сервер (давайте назовем его сервером) через 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 для Windows с X-сервером.

Для сервер отсутствует X11, вам придется его установить.

На экране сервера

Вы также можете запустить экземпляр на экране вашего сервера, вызвав gedit следующим образом: [ ! d13]

ssh user@server
DISPLAY=:0.0 gedit

Вы должны подставить правильное значение вместо :0.0, хотя для его получения на правом X-экране (важно только, если к вашему серверу подключено несколько экранов или если оно несколько своеобразно в своей конфигурации ).

Здесь наиболее распространенным сценарием для этого не было бы, если бы серверу не хватало X11-Server, но он не имел бы подключенного к нему монитора или не имел графического интерфейса пользователя, d Не читайте это: 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 на рассматриваемой машине. * Затем каждый компьютер, который настроен для обеспечения доступности своих экранов и запускает X-сервер, имеет имя хоста. Вы можете использовать экраны хостов с любого компьютера в той же сети, установив свою переменную DISPLAY в соответствии с DISPLAY=hostname:0.0. Ssh делает это для вас разумным способом, если вы предоставите опцию -X.

* Примечание: я полагаю, что есть лучший способ, чем этот цикл for.

Если все остальное не работает

Используйте текстовый редактор оболочки. vi, vim, nano и emacs являются наиболее распространенными, и по крайней мере один из них будет установлен и функционален. Из них nano является самым простым и самоочевидным.

17
ответ дан 25 May 2018 в 07:35
  • 1
    @coding crow: Если вы используете SSHing из Windows, это зависит от клиента, будет ли это работать. Некоторые клиенты не общаются с X11 и, следовательно, не переадресовывают X - для некоторых, хотя это просто отлично работает. Если не работает, измените SSH-клиент для Windows или используйте nano, vim или emacs, как xyious, предложенный в его ответе. – con-f-use 14 August 2012 в 17:19
  • 2
    Да, я получил голосу, увидел это в своем профиле и задался вопросом, почему нет комментариев или чего-то еще. Не так важно было не иметь с тобой отношения, просто удивился - рад, что проблема решена, и я мог бы немного помочь здесь. – con-f-use 14 August 2012 в 19:27
  • 3
    Я немного изменил цикл for .. теперь будет отображаться только адрес дисплея, например. :0 :0.0. Не стесняйтесь возвращаться, если вы думаете, что это не то, что вы хотите. – heemayl 24 April 2015 в 11:15

То, что говорило в использовании.

В принципе, у вас есть терминал через SSH, а Gedit - программа GUI. Ответ con-f-use заставит его работать с сеансом клиента GUI Linux.

Другим вариантом было бы использовать редактор без GUI, такой как nano, Vi или многие другие.

0
ответ дан 25 May 2018 в 07:35

Другие вопросы по тегам:

Похожие вопросы: