| |
— | wiki:articles:xdmcpssh [05/04/2017 09:55] (текущий) – создано - внешнее изменение 127.0.0.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|Обсуждаем на форуме]] |