From 5f98503b78f5aa80bd48f4633ce82e9a219ed7e6 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Thu, 27 Oct 2016 22:48:07 +0300 Subject: [PATCH] =?utf8?q?=D0=9F=D0=B0=D1=80=D0=BD=D0=BE=D0=B5/=D0=B3?= =?utf8?q?=D1=80=D1=83=D0=BF=D0=BF=D0=BE=D0=B2=D0=BE=D0=B5=20=D0=BF=D1=80?= =?utf8?q?=D0=BE=D0=B3=D1=80=D0=B0=D0=BC=D0=BC=D0=B8=D1=80=D0=BE=D0=B2?= =?utf8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B8=20=D1=83=D0=B4=D0=B0=D0=BB?= =?utf8?q?=D1=91=D0=BD=D0=BD=D1=8B=D0=B9=20read-only=20=D0=B4=D0=BE=D1=81?= =?utf8?q?=D1=82=D1=83=D0=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit На работе практикуется парное программирование. Но вместо того, чтобы сидеть рядом с человеком и заставлять и его и себя сидеть неудобно, мы удалённо подключаемся к нему и смотрим на своём компьютере в его экран. Так как любой уважающий себя разработчик, не связанный с паршивыми технологиями требующими GUI, сидит за текстовым терминалом, то задача показа его экрана выполняется очень просто и эффективно за счёт tmux. Заводим отдельного пользователя под которым будут входить удалённые пользователи, например с именем arbeit. В его .ssh/authorized_keys добавляем ключи коллег и ограничения с автоматическим подключением к рабочей сессии tmux: restrict,pty,command="/usr/local/bin/tmux -S /tmp/arbeit.sock attach-session -r" ssh-ed25519 ... collegue@arbeit.com Запускаем свою рабочую сессию в демоне на отдельном сокете: tmux -S /tmp/arbeit.sock new-session -d -s arbeit tmux -S /tmp/arbeit.sock new-window -t ... tmux -S /tmp/arbeit.sock attach-session -t arbeit chgrp arbeit /tmp/arbeit.sock Теперь все подключающиеся (причём с шифрованием и аутентификацией по OpenSSH) не имеют никаких прав и сразу же в режиме чтения подключаются к общей сессии. В FreeBSD нужно не забыть указать что терминал вполне себе UTF-8: arbeit% cat ~/.login_conf me:\ :charset=UTF-8:\ :lang=en_EN.UTF-8: Но, бывают непотребства в виде необходимости парно посмотреть на что-то в броузере. Так как это GUI, то всё сильно портится, но более менее возможность работать выходит за счёт x11vnc: x11vnc -display :0 -no6 -viewonly -forever -shared -ncache xwininfo ; x11vnc -display :0 -no6 -viewonly -forever -shared -ncache -id WindowID Это даёт read-only доступ многочисленным подключениям и не выходит когда все отключились. -no6 полезна тем, что если firewall не защищает от подключений извне, то чтобы по IPv6 порт с сессией не стал доступен общественности. -ncache включает, так называемое, кэширование. Это выделение в 10 раз большего пространства видеопамяти которая кэширует предыдущие состояния (например переключениям между окнами) изображения, а дальше посылает команды копирования прямоугольных областей, вместо их полной отрисовки. Это жрёт память неплохо (счёт на сотни мегабайт), но существенно повышает производительность отрисовки. Но, стоит помнить что vncviewer-у можно сказать чтобы он ещё и сжимал трафик. Это очень помогает и буквально в разы (хотя достаточно было бы RLE сжатия) уменьшает объёмы трафика, так как zlib на современном железе в real-time вполне себе справится и сожмёт хорошо. -- 2.48.1