How to start a GUI software on a remote Linux PC via SSH
Sometimes I need to start XMBC media player or other GUI software on one of my remote PC (small Xubuntu PC used as a media center). Usually, I do this by starting an X11vnc server on the remote PC via SSH and then connecting with an Xvnc client to the Xfce desktop. Is there a way to start a GUI software on a remote Linux PC via SSH? Thanks!
Can confirm that the approach in chosen answer works if the remote client is a Mac, too. Working successfully with macOS Sierra.
5 Answers 5
Yes. You just need to run export DISPLAY=:0 (or whatever the remote display is numbered as) in your ssh session and programs run will run on the remote display. A quick example:
oli@bert:~$ ssh tim oli@tim:~$ export DISPLAY=:0 oli@tim:~$ firefox
Firefox is now running on tim ‘s display.
However when you close your ssh session, most of the time the remote application will close. If you want to disconnect from ssh but leave the application running you need to launch it in a special way using something like screen (keeps the ssh session running in the background) or nohup , or another method. For more information on this there was recently another question on it.
You can shorten this all down into one command that will connect, export the display in-line and start the application in a way that won’t close it after the ssh session dies:
ssh tim "DISPLAY=:0 nohup firefox"
Запуск графических приложений через SSH (X11Forwarding)
На компьютер клиента передается «картинка».
На удаленном компьютере (на котором выполняется само приложение) должны быть X‘ы и все что нужно, что бы запустить программу.
Настройка клиента Windows
Установка Xming
Xming — порт сервера X Window System для операционной системы Microsoft Windows.
Скачать Xming с SourceForge и установить.
Настройка PuTTy
Просто запускаем программу в терминале
Обсуждение
спасибо, всё работает на ура! только очень тормознуто (или это только у меня так?).
Да есть такое, что тормозит жутко, даже если через локалку
Алексей, радует, что причина тормозов в данном случае — не мои кривые ручки. а что посоветуете вместо данного решения? пробую сейчас xrdp (в линуксах не шибко разбираюсь), и через rdp из winxp у меня только консольное окно появилось, рабочего стола как такового нет. думаю вот, что делать дальше. 🙂
Кроме VNC ничего другого не использовал, так что советовать мне особо нечем
у меня уже всё получилось. доставил xrdp в систему, из winxp запустил терминальную сессию на ip-адрес компа с linux, увидел окошко терминала, набрал google-chrome (ради чего всё и затевал) и получил нужное. что радует, после закрытия терминального окна и повторного входа вижу всё ту же картинку, что и до закрытия. сам не ожидал, что всё так просто получится. Алексей, спасибо за статью и успехов в делах! 🙂
тоже настроил, всё работает кроме PHPStorm. запускаю, он запускается, но картинку на клиента не передаёт, а локально отображается почему-то. А все остальные программы работают как надо, удалённо.
Запуск графических приложений по ssh
Вначале немного лирики, а потом — практические советы. На днях я решил попробовать удаленно зайти на компьютер любимой жены и дочурки и во время просмотра онлайн кино захотел запустить на их экране текстовый файл с текстом и изображением. Для начала я создал на своем микро-компьютере Raspberry PI 3 в LibreOffice Writter надпись «Я вас люблю» и сохранил на Рабочий стол. Потом я подключился к их компьютеру по ssh, запустил Midnicht Commander и скопировал в их Домашний каталог созданный файл test.odt. И во время данного эксперимента я для себя сделал небольшое открытие, хотя до этого об одном из пунктов я знал.
1. По ssh соединению можно запустить графическое приложение удаленного компьютера, которое откроется на вашем мониторе.
2. Можно также запустить то же графическое приложение, но оно уже откроется на удаленном мониторе.
Возможно многие скажут, что ничего нового я не написал, но просто раннее мне не приходилось проделывать эти действия и свершилось это только сейчас. В любом случае для многих это будет очень полезным, уж для меня это точно оказалось познавательным и нужным.
Для начала нужно сделать кое-какие настройки в конфигурационном файле /etc/ssh/sshd_config на удаленном компьютере и вашем. На удаленной машине нужно раскомментировать (убрать символ # ) или добавить строку:
После перегрузим ssh, выполнив команду:
На своем компьютере нужно раскомментировать или добавить строку:
Теперь, подключаясь к удаленному хосту, для запуска графической программы, нужно будет использовать следующие ключи:
X — перенаправлять графический вывод
С — компрессия передаваемых данных
Команда будет иметь такой вид:
где — user (логин пользователя удаленной машины)
192.168.1.xx — IP-адрес удаленной машины.
После этого можно запускать любую программу, имеющую графический интерфейс, и она появится на вашем мониторе. Вы увидете приложение даже в том случае, если такая же программа не установлена на вашем компьютере. В итоге можно запустить удаленную графическую программу и на своем мониторе поработать с ней, а результат сохранить на удаленный компьютер. Это очень удобно, если хозяин удаленной машины попросил вас помочь в настройке определенной программы, или в создании какого-нибудь файла, созданного в LibreOffice, GIMP, Inkscape и т.д. Вы теперь можете удаленно помочь человеку. Хотя некоторые тормоза присутствуют, но это не критично.
Теперь рассмотрим случай, когда нужно запустить удаленное приложение, которое должно отобразиться на том же удаленном компьютере.
После этого дадим команду GUI программам, что по нашей (удаленной) команде, они должны запустить в графическом режиме на своем (локальном) компьютере:
Теперь можно запускать любое приложение:
или, как в моем случае, я запустил нужный мне файл:
Можно также запустить приложение в связке с утилитой nohup, которая защитит программу от сбоев связи. Теперь даже если вы отключитесь от удаленной машины, то запущенная программа будет работать. Пример:
Можно сразу запустить браузер с нужным сайтом: