Различия

Показаны различия между двумя версиями страницы.


wiki:articles:xdmcpssh [05/04/2017 09:55] (текущий) – создано - внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +Дата написания: //март 2017 г.//\\
 +Автор: //Graf//\\
 +\\
 +^   **Запуск удалённых приложений по протоколу SSH или XDMCP**   ^
 +\\
  
 +----
 +
 +
 +Для примера я взял уже настроенную [[wiki:articles:pi|по своей статье]] //Raspberry// в качестве клиента.
 +В принципе, дальнейшие действия можно делать на любом компьютере с ОС //Slackware Linux//, а не только на //Raspberry//.\\
 +И так, дабы не загружать нашу //Raspberry// всевозможными DE и графическими приложениями, возьмем более мощный компьютер или сервер на котором всё это установлено и будем его использовать как сервер приложений, к которому будем подключаться по протоколу SSH или XDMCP (X Display Manager Control Protocol — протокол управления диспетчером X-отображения), допустим, с **IP-192.168.10.10** и именем **server.mydom.lan**, а нашей //Raspberry// дадим **IP-192.168.10.11** и имя **rpi.mydom.lan**. \\
 +Какой протокол использовать, решать вам. При подключении в сети 1Gb по SSH, нагрузка на процессор доходила до 65%, правда, это никак не сказывалось на отображение видео. А вот при подключении по //XDMCP// максимальная нагрузка была замечена в 35%. Но, надо учесть и тот факт, что соединение по SSH более защищено и поэтому требует больше ресурсов в отличии от XDMCP. По той же причине рекомендуется использовать протокол XDMCP только в локальных, доверительных сетях.\\
 +Если кто не знает, то //ZmNinja// - это приложение для просмотра и настройки камер на //ZoneMinder// о котором немного написано в[[:wiki:articles:zm#zmninja| моей статье]] о самом //ZoneMinder//.
 +
 +===== SSH =====
 +==== Настройка сервера ====
 +Первое, что мы сделаем, это пропишем в ///etc/hosts// наш сервер и //Raspberry//.
 +<file>
 +127.0.0.1              localhost
 +192.168.10.10          server.mydom.lan server
 +192.168.10.11          rpi.mydom.lan rpi
 +</file>
 +Теперь создадим пользователя, под которым будем соединяться.
 +<code>
 +# useradd -m -d /home/tvset -g users -s /bin/bash tvset
 +# passwd tvset
 +Изменение пароля для tvset
 +Введите новый пароль (минимальная длина 5 символов)
 +Используйте комбинацию из символов в верхнем и нижнем регистре и цифры.
 +Новый пароль: 
 +Повторите новый пароль: 
 +passwd: пароль изменён.
 +
 +# id tvset
 +uid=1000(tvset) gid=100(users) группы=100(users)
 +
 +# cat /etc/passwd | grep tvset
 +tvset:x:1000:100::/home/tvset:/bin/bash
 +</code> 
 +
 +Изменяем файл ///etc/ssh/sshd_conf//, удаляя знаки комментария с нужных параметров, приведя к виду:
 +<file>
 +AuthorizedKeysFile      .ssh/authorized_keys
 +X11Forwarding yes
 +X11DisplayOffset 10
 +X11UseLocalhost yes
 +Subsystem       sftp    /usr/libexec/sftp-server
 +</file>
 +
 +Создаем файл //~/.bash_profile// с содержимым:
 +<file>
 +xset dpms 0 0 0
 +xset s off
 +/usr/bin/wmaker --no-dock --no-clip --static &
 +/usr/bin/firefox http://vm.mydom.ru
 +# /ПУТЬ/К_zmNinja/zmNinja
 +</file>
 +где:\\
 +//**xset dpms 0 0 0**// - запрещаем режим энергосбережения (чтобы экран всё время показывал изображения, а не отключался через определённое время простоя);\\
 +//**xset s off**// - отключаем защитник экрана;\\
 +//**/usr/bin/wmaker --no-dock --no-clip --static &**// - запускаем //WindowMaker// с чистым рабочим столом в фоне;\\
 +//**/usr/bin/firefox %%http://vm.mydom.ru%%**// - запускаем //Firefox// со страничкой входа на наш видеосервер;\\
 +//**# /ПУТЬ/К_zmNinja/zmNinja**// - или вместо //Firefox// запускаем //zmNinja//, убрав знак комментария и написав полный путь до него.\\
 +Можно в //Firefox// установить расширение //kiosk-costaisa// и тогда он будет автоматически раскрываться на весь экран.
 +
 +Создадим файл ///etc/X11/Xwrapper.config// и пропишем туда одну строку.
 +<file>
 +allowed_users=anybody
 +</file>
 +
 +Перезапустим демон //sshd//.
 +<code>
 +# /etc/rc.d/rc.sshd stop
 +# /etc/rc.d/rc.sshd start
 +</code>
 +
 +==== Настройка Raspberry ====
 +
 +В ///etc/HOSTNAME// пропишем нашу //Raspberry//:
 +<file>
 +rpi.mydom.lan
 +</file>
 +Теперь создадим пользователя, любого, не обязательно такого же, под которым будем соединяться. Ведь работать под супер пользователем, плохая привычка. Но, если потом мы запланируем автоматический вход в систему без ввода пароля и дальнейшее автоматическое подключение по //ssh// к серверу приложений, то лучше пользователей создать одинаковых с одинаковыми паролями, дабы не запутаться самим.
 +<code>
 +# useradd -m -d /home/tvset -g users -s /bin/bash tvset
 +# passwd tvset
 +Изменение пароля для tvset
 +Введите новый пароль (минимальная длина 5 символов)
 +Используйте комбинацию из символов в верхнем и нижнем регистре и цифры.
 +Новый пароль: 
 +Повторите новый пароль: 
 +passwd: пароль изменён.
 +</code>
 +
 +Изменяем файл ///etc/ssh/ssh_conf//, удаляя знаки комментария с нужных параметров и(или) дописывая отсутствующие, приведя к виду:
 +<file>
 +Host *
 +  ForwardX11 yes
 +  ForwardX11Trusted yes
 +  XAuthLocation /usr/bin/xauth
 +</file>
 +
 +Создаем файл //~/.xinitrc// с содержимым:
 +<code=bash>
 +#!/bin/sh
 +
 +userresources=$HOME/.Xresources
 +usermodmap=$HOME/.Xmodmap
 +sysresources=/etc/X11/xinit/.Xresources
 +sysmodmap=/etc/X11/xinit/.Xmodmap
 +
 +# merge in defaults and keymaps
 +
 +if [ -f $sysresources ]; then
 +    xrdb -merge $sysresources
 +fi
 +
 +if [ -f $sysmodmap ]; then
 +    xmodmap $sysmodmap
 +fi
 +
 +if [ -f $userresources ]; then
 +    xrdb -merge $userresources
 +fi
 +
 +if [ -f $usermodmap ]; then
 +    xmodmap $usermodmap
 +fi
 +
 +xterm -e "/usr/bin/ssh -XC tvset@192.168.10.10"
 +</code>
 +
 +и cделаем его запускаемым.
 +<code>
 +# chmod +x ~/.xinitrc
 +</code>
 +
 +Теперь, при входе в систему под пользователем //tvset// и вводе команды //startx// или //xinit//, мы увидим окно //xterm//'инала c запросом о добавлении ключа (выводится один раз при новом подключении), вводим "yes" и потом пароль пользователя //tvset// на сервере.
 +<code>
 +The authenticity of host '192.168.10.10 (192.168.10.10)' can't be established.
 +ECDSA key fingerprint is SHA256:XC6c+U4lQFFUDOIuXCWrToOzHCC8g9tiXBHTZNrR8aY.
 +Are you sure you want to continue connecting (yes/no)? yes
 +
 +Warning: Permanently added '192.168.10.10' (ECDSA) to the list of known hosts.
 +tvset@192.168.10.10's password: 
 +
 +</code>
 +После ввода пароля мы сразу же увидим //Firefox// или //zmNinja//, в зависимости от того, что прописали в файле //~/.bash_profile// на сервере.
 +
 +  * **Автологин**
 +
 +Для того чтобы не вводить пароль на доступ по ssh, воспользуемся специально созданными ключами.
 +<code>
 +$ ssh-keygen -t rsa
 +
 +Generating public/private rsa key pair.
 +Enter file in which to save the key (/home/tvset/.ssh/id_rsa):    <-- Enter
 +Enter passphrase (empty for no passphrase):                       <-- Enter
 +Enter same passphrase again:                                      <-- Enter  
 +Your identification has been saved in /home/tvset/.ssh/id_rsa.
 +Your public key has been saved in /home/tvset/.ssh/id_rsa.pub.
 +The key fingerprint is:
 +...
 +...
 +...
 +</code>  
 +
 +И передадим публичный ключ серверу.
 +<code>
 +$ ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.10.10
 +
 +/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/tvset/.ssh/id_rsa.pub"
 +/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
 +/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
 +
 +tvset@192.168.10.10's password:  <-- Тут вводим пароль tvset на сервере.
 +
 +Number of key(s) added: 1
 +
 +Now try logging into the machine, with:   "ssh '192.168.10.10'"
 +and check to make sure that only the key(s) you wanted were added.
 +
 +</code>
 +Теперь, при входе в систему под пользователем //tvset// и вводе команды //startx// или //xinit//, мы увидим //Firefox// или //zmNinja//, в зависимости от того, что прописали в файле //~/.bash_profile// на сервере.
 +
 +Если мы хотим полностью автоматизировать процесс, т.е. при включении //Raspberry// сразу видеть картинку с сервера, то нам необходимо ещё изменить некоторые строки в файле ///etc/inittab//
 +<code>
 +# Default runlevel. (Do not set to 0 or 6)
 +#id:3:initdefault:
 +id:4:initdefault:
 +
 +# These are the standard console login getties in multiuser mode:
 +#c1:12345:respawn:/sbin/agetty --noclear 38400 tty1 linux
 +c1:12345:respawn:/sbin/agetty -a tvset -8 -s --noclear 38400 tty1 linux
 +
 +# Runlevel 4 also starts /etc/rc.d/rc.4 to run a display manager for X.
 +# Display managers are preferred in this order:  gdm, kdm, xdm
 +#x1:4:respawn:/etc/rc.d/rc.4
 +</code>
 +и создать //~/.bash_profile//, прописав туда
 +<code>
 +/usr/bin/startx
 +</code>
 +Но много-много раз подумайте, на сколько вам необходима такая полная автоматизация!
 +
 +===== XDMCP =====
 +
 +==== Настройка сервера ====
 +Первое, что мы сделаем, это пропишем в ///etc/hosts// наш сервер и //Raspberry//
 +<file>
 +127.0.0.1              localhost
 +192.168.10.10          server.mydom.lan server
 +192.168.10.11          rpi.mydom.lan rpi
 +</file>
 +и создадим пользователя под которым будем соединяться.
 +<code>
 +# useradd -m -d /home/tvset -g users -s /bin/bash tvset
 +# passwd tvset
 +Изменение пароля для tvset
 +Введите новый пароль (минимальная длина 5 символов)
 +Используйте комбинацию из символов в верхнем и нижнем регистре и цифры.
 +Новый пароль: 
 +Повторите новый пароль: 
 +passwd: пароль изменён.
 +</code> 
 +В файле ///etc/X11/xdm/xdm-config// комментируем строку поставив вначале строки восклицательный знак - "!", тем самым указывая XDM на то, что он должен принимать обращения через UDP - порт 177 (порт по умолчанию для XDMCP):
 +<file>
 +! DisplayManager.requestPort:   0
 +</file>
 +
 +В файле ///etc/X11/xdm/Xaccess// прописываем нашу //Raspberry//.
 +<file>
 +rpi.mydom.lan
 +</file>
 +
 +Так же прописываем её в файле ///etc/X11/xdm/Xservers//, где //foreign// указывает на то, что заданная система является удаленной и запрещаем запуск xdm на самом сервере.
 +<file>
 +#:0 local /usr/bin/X :0
 +rpi.mydom.lan:0 foreign
 +</file>
 +
 +Создаем файл //~/.bash_profile// со содержимым:
 +<file>
 +xset dpms 0 0 0
 +xset s off
 +/usr/bin/wmaker --no-dock --no-clip --static &
 +/usr/bin/firefox http://vm.mydom.ru
 +# /ПУТЬ/К_zmNinja/zmNinja
 +</file>
 +где:\\
 +//**xset dpms 0 0 0**// - запрещаем режим энергосбережения (чтобы экран всё время показывал изображения, а не отключался через определённое время простоя);\\
 +//**xset s off**// - отключаем защитник экрана;\\
 +//**/usr/bin/wmaker --no-dock --no-clip --static &**// - запускаем //WindowMaker// с чистым рабочим столом, в фоне;\\
 +//**/usr/bin/firefox %%http://vm.mydom.ru%%**// - запускаем //Firefox// со страничкой входа на наш видеосервер;\\
 +//**# /ПУТЬ/К_zmNinja/zmNinja**// - или вместо //Firefox// запускаем //zmNinja//, убрав знак комментария и написав полный путь до него.\\
 +Можно в //Firefox// установить расширение //kiosk-costaisa// и тогда он будет автоматически раскрываться на весь экран.
 +
 +Изменить окно ввода логина и пароля XDM, можно отредактировав файл ///etc/X11/xdm/Xresources//. В итоге, у меня получилось вот такое окно. \\
 +\\
 +{{:wiki:articles:tvset.jpg?nolink&400|}}
 +\\
 +\\
 +Конвертировать картинку в //xpm// формат можно при помощи //convert//.
 +<code>
 +# convert ./myphoto.jpg ./myphoto.xpm
 +</code>
 +
 +Чтобы xdm запускался автоматически после перезагрузки сервера, пропишем его в ///etc/rc.d/rc.local//.
 +<code>
 +/usr/bin/xdm &
 +</code>
 +==== Настройка Raspberry ====
 +
 +В ///etc/HOSTNAME// пропишем нашу //Raspberry//:
 +<file>
 +rpi.mydom.lan
 +</file>
 +Теперь создадим пользователя, любого, не обязательно такого же под которым будем соединяться. Ведь работать под супер пользователем, плохая привычка. Но, если потом мы запланируем автоматический вход в систему без ввода пароля, то лучше пользователей создать одинаковых с одинаковыми паролями, дабы не запутаться самим.
 +<code>
 +# useradd -m -d /home/tvset -g users -s /bin/bash tvset
 +# passwd tvset
 +Изменение пароля для tvset
 +Введите новый пароль (минимальная длина 5 символов)
 +Используйте комбинацию из символов в верхнем и нижнем регистре и цифры.
 +Новый пароль: 
 +Повторите новый пароль: 
 +passwd: пароль изменён.
 +</code>
 +Собственно, вся настройка :). Теперь, войдя под пользователем tvset, достаточно ввести в консоли:
 +<code>
 +$ X -query 192.168.10.10
 +</code>
 +и перед вами появится окно ввода логина и пароля //xdm//. После ввода логина и пароля мы сразу же увидим //Firefox// или //zmNinja//, в зависимости от того, что прописали в файле //~/.bash_profile// на сервере.
 +
 +  * **Автологин**
 +
 +Если мы хотим автоматизировать процесс, т.е. при включении //Raspberry// сразу видеть окно ввода логина и пароля //xdm//, то нам необходимо изменить некоторые строки в файле ///etc/inittab//
 +<code>
 +# Default runlevel. (Do not set to 0 or 6)
 +#id:3:initdefault:
 +id:4:initdefault:
 +
 +# These are the standard console login getties in multiuser mode:
 +#c1:12345:respawn:/sbin/agetty --noclear 38400 tty1 linux
 +c1:12345:respawn:/sbin/agetty -a tvset -8 -s --noclear 38400 tty1 linux
 +
 +# Runlevel 4 also starts /etc/rc.d/rc.4 to run a display manager for X.
 +# Display managers are preferred in this order:  gdm, kdm, xdm
 +#x1:4:respawn:/etc/rc.d/rc.4
 +x1:4:respawn:/usr/bin/X -query 192.168.10.10
 +</code>
 +Но много-много раз подумайте, на сколько вам необходима такая полная автоматизация!
 +
 +----
 +[[http://slackware.su/forum/index.php/topic,2791.0.html|Обсуждаем на форуме]] 
Навигация
Печать/экспорт
QR Code
QR Code wiki:articles:xdmcpssh (generated for current page)