Synergy — одна клава-мышь на все компьютеры

    Есть замечательная программа synergy. Позволяет использовать один комплект клава-мышь несколькими компьютерами. Она кроссплатформенна, работает в системах MS — как Windows, так и NT, в Mac OS X. Ну, и конечно — в X11.

    О synergy здесь уже говорили, я немножко добавлю.

    Windows и OS X касаться не буду, уделю внимание лишь X11.

    Компьютер, к которому подключены клава и мышь выступает в роли сервера, на нём запускается synergys. Прочие компьютеры — клиенты — на них работает synergyc, который подключается к synergys. По TCP, конечно. Все настройки делаются на стороне сервера. В конфиге описываются расположение экранов сервера и клиентов относительно друг друга — справа, слева, сверху, снизу.

    Установка в Debian подобных системах:

    apt-get install synergy

    Пример конфига /etc/synergy.conf. В центре — компьютер main, слева от него laptop1, справа laptop2. Все они образуют кольцо — когда указатель переходит левый край левого экрана, он оказывается на правом краю правого.

    # /etc/synergy.conf
    #
    # Экраны всех компьютеров, включая серверный
    # Именуются хост именами компьютеров
    section screens
      main:
      laptop1:
      laptop2:
    end
    #
    # Взаимное расположение экранов
    section links
      main:
        left: laptop1
        right: laptop2
      laptop1:
        left: laptop2
        right: main
      laptop2:
        left: main
        right: laptop1
    end

    Запуск сервера — командой synergys.

    Подключение — synergyc имя_или_адрес_сервера. Если хост имя клиента отличается от того, что прописано в конфиге сервера, то можно указать параметр -n имя_клиента, где имя_клиента — имя из конфига.

    Сервер работает только в иксах, и только в активном X сервере — в том, что принимает ввод от HID'ов. Если переключиться в другую консоль, включая другой X сервер, то synergys перестаёт обслуживать клиентов. До тех пор, пока X сервер снова не получит клаву-мышь.

    Когда на одном компьютере поочерёдно работают несколько пользователей, можно запустить synergys в каждом X сервере, включая тот, где запущен GDM. Каждый synergys использует свой TCP порт, а что касается конфига — достаточно одного на всех. Дефолтный порт — 24800. Для указания порта используется ключ -a [адрес][:порт]. Пример: synergys -a :24801. Адрес не указан — слушает на всех интерфейсах.

    Synergy не очень безопасна. Все нажатия клавиш передаются открытым текстом, всторенных механизмов шифрования нет. На помощь придёт SSH с форвардингом портов. Локальным форвардингом. О форвардинге можно почитать man ssh и статью SSH Port Forwarding.

    Сначала запускается ssh:

    ssh -f -L24800:имя_или_адрес_сервера:24800 имя_или_адрес_сервера sleep 10

    Локальный порт 24800 проброшен до порта 24800 сервера. ssh ушел в бэкграунд (ключ -f) и выполняет на удалённой стороне sleep 10. За эти 10 секунд надо успеть запустить synergyc, иначе ssh завершит работу.

    synergyc localhost

    Теперь об удобстве использования. Если сервер можно запускать при старте иксов автоматически — вписав в .xsession, либо, в соответствии с сегодняшней модой — пощёлкав мышью в центре управления GNOME/KDE/XFCE/LXDE, то с клиентом дело сложнее. Его лучше запускать интерактивно.

    Есть утилита quicksynergy. Иксовая, точнее — под GTK. Так вот. Мне она не нравится. Для того, чтобы запустить клиента, надо перейти на вкладку, вписать имя сервера, щёлкнуть «запустить», потом щёлкнуть «закрыть», чтобы она спряталась в трэй. Запоминает лишь последний вписанный сервер. Значок в трэе слишком здоровый — бросается в глаза. ssh запускать не умеет. Вобщем — ужасная вещь. Я и не пользуюсь ею.

    Написал свой скрипт для запуска и остановки клиента. Обычный шелл скрипт. На моём компьютере этот скрипт называется ~/bin/syn

    При запуске без параметров, ~/syn выдаёт коротенькую помощь по использованию.

    Конфигурация в самом тексте скрипта. Блок case $TARGET in, идущий сразу после комментария # Start user configurable settings.

    Пример конфигурации. Имя первого хоста, домашнего, например — main.example.com, на нём два X сервера — работают 2 пользователя. Соответственно — два synergy сервера. Имя второго хоста, например, на работе — second.example.com. Там один X сервер. Локальные порты должны быть разные, чтобы несколько клиентов можно было запустить одновременно.

    # ...
    # Start user configurable settings
    case $TARGET in
      d1)
        # Первый хост, первый X сервер
        SYN_LOCAL_PORT=24800
        REMOTE_HOST='main.example.com'
        SYN_REMOTE_PORT=24800
      d2)
        # Первый хост, второй X сервер
        SYN_LOCAL_PORT=24801
        REMOTE_HOST='main.example.com'
        SYN_REMOTE_PORT=24801
      w)
        # Второй хост
        SYN_LOCAL_PORT=24802
        REMOTE_HOST='second.example.com'
        SYN_REMOTE_PORT=24800
    # ...

    Ещё, неплохо поправить строку Defined tragets функции usage, с которой начинается скрипт.

    Запуск клиента:

    $ ./bin/syn d1 start
    Starting: 'ssh -f -L24800:main.example.com:24800 main.example.com sleep 10' .. done.
    Starting: 'synergyc 127.0.0.1:24800' .. done.

    Просмотр состояния запущенного клиента:

    $ ./bin/syn d1 status
    Checking ssh process: 'ssh -f -L24800:main.example.com:24800 main.example.com sleep 10' .. running, PID 18503.
    Checking synergyc process: 'synergyc 127.0.0.1:24800' .. running, PID 18505.

    Убить клиента:

    ./bin/syn d1 stop
    Killing: 'synergyc 127.0.0.1:24800' .. done
    Killing: 'ssh -f -L24800:main.example.com:24800 main.example.com sleep 10' .. done.

    Просмотр состояния незапущенного клиента:

    ./bin/syn d1 status
    Checking ssh process: 'ssh -f -L24800:main.example.com:24800 main.example.com sleep 10' .. stopped
    Checking synergyc process: 'synergyc 127.0.0.1:24800' .. stopped.
    

    P.S. Для бысторого запуска чего-либо из командной строки, я пользуюсь Тильдой, привязанной к клавишам <Alt ~>.
    Поделиться публикацией

    Комментарии 13

      +1
      Удобная вещь, но не слишком распространённая: потенциальным пользователям трудно растолковать, что synergy — это не средство удалённого управления и не виртуальный KVM.
        +1
        Ну да. KM это не KVM.
        +1
        а кстати никто не нашёл как починить запятые, точку с запятой в русской раскладке?
          +1
          Вернуть пятёрку, шестёрку, семёрку?
            +1
            Если я правильно понял, то Вы говорите о стандартной русской раскладке, которая была в консоли и иксах долгие годы прежде — запятая — <Shift 6>, точка — <Shift 7>. Запустите:

            setxkbmap "us,ru(common)"

            И получите ту самую раскладку.
              0
              Всё-таки хотелось бы, чтобьы winkeys раскладка работала)
              в ней как раз и не передаются по synergy символы, где есть запятые.
                0
                У Вас разные OS? В смысле — принципиально разные, типа Windows-Linux?
                У меня между Линуксами таких проблем нет — передаются все-все нажатия, winkeys с запятыми тоже.
                  0
                  Ubuntu 9.04 vs 10.04 или Ubuntu 9.10 vs 10.04… debian vs 10.04

                  Хотя скорее всего вы правы — я ни разу не пользовался synergy без участия 10.04
                    0
                    А вот под виндами эта траббла есть:(
                      0
                      Только написал, еще раз проверил и уже нет О_о Видать НЛО прилетело и исправило %)
              0
              Можно ли с ее помощью организовать виртуальный монитор? как MaxiVista умеет.
                0
                Нет, нельзя. Synergy умеет лишь шарить HID'ы и буфер обмена.

                P.S. Посмотрел что такое MaxiVista. Миленько.
                  0
                  Я на ней 5 мониторов в мозайку выстраивал. Прямо передо мной было 4 — получился такой огромный квадратный монитор, а 5-й я поставил на соседний стол. По сети не тормозило. Качество картинки почти не отличить от оригинала.

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое