Оглавление

Synergy

Synergy — очень простая, кросплатформенная утилита, позволяющая управлять многими компьютерами с одного. При этом «шарятся» клавиатура, мышь и буфер обмена. Получается, что всеми объединёнными компьютерами вы можете управлять с одной клавиатуры и мыши и легко переносить данные между ними через буфер обмена.

Остальные ресурсы, типа дисков, директорий, принтеров… можно расшарить другими способами.

Под Windows Synergy настраивается через GUI и там всё просто, а про Linux написано очень мало. Попытаюсь компенсировать этот недостаток.

Объединяем компьютеры

Компьютер, к которому подключены физические клавиатура и мышь получает роль сервера. К нему могут подключаться клиенты (в любом количестве) и предоставлять ему свои ресурсы.

В этом конкретном примере мы будем объединять два Linux-компьютера через ssh-туннель.

Настраиваем Synergy-сервер

Создаём конфигурационный файл. Скажем .synergy.conf. В нём будут использоваться имена хостов. Те самые, которые можно посмотреть командой hostname.

В моём случае, компьютер-сервер с физическими клавиатурой и мышью называется main, он стоит передо мной, а клиент — idream, он находится слева.

Конфиг получается такой:

section: screens
  main:
  idream:
end
section: links
  main:
    left = idream
  idream:
    right = main
end

В секции screens мы просто перечисляем наши компьютеры.

В секции links описываем их физическое расположение друг относительно друга. Из этой секции synergy узнает, куда переводить управление, при «уходе» мыши за край экрана.

Запускаем synergy-сервер с отладкой:

synergys -f -c .synergy.conf

Synergy-клиент

Тут никаких специальных настроек не требуется.

Теперь пробрасываем на удалённую машину (наш idream) ssh-туннель. Synergy использует порт 24800. Идём по ssh на idream с пробросом обратного туннеля:

ssh -R 24800:localhost:24800 idream

Допустим, там уже запущены X. Обычно X запускается на дисплее :0, но если вы не уверены, то можете поискать актуальный дисплей такой командой

ps auxwwwe | grep --color=always DISPLAY=

Запускаем Synergy-клиента с указанием дисплея:

DISPLAY=:0 synergyc -f localhost

Он будет работать через ssh-туннель. То есть, весь трафик будет шифроваться и вам не надо на севере открывать никаких портов.

Что можно улучшить и автоматизировать

Итак, мы запустили связку двух компьютеров. Она пока работает со включённым дебагом.

Можно автоматизировать запуск всего этого дала.

На сервере в .xinitrc можно добавить автоматический запуск Synergy-сервера:

synergys -a 127.0.0.1 -c .synergy.conf

Мы убрали отладку (ключ -f) и добавили безопасности. Теперь Synergy будет слушать только на lo интерфейсе. подключиться к нему снаружи будет невозможно.

На клиенте можно всё выполнить с помощь ssh. Например так:

ssh -R 24800:localhost:24800 idream xinit /usr/bin/bash -c 'twm & synergyc -f localhost'

Эта команда запустит X, запустить оконный менеджер twm и стартует synergy-клиента. Обратите внимание, что путь к bash должен быть полным, подругому xinit не понимает.

Остальных опций можно добавить по вкусу.

Напоследок только отмечу, что Synergy допускает тонкое конфигурирование. Вы можете назначить горячие клавиши, изменить политику переключения между машинами… Нормальной документации я так и не нашёл, самое толковое, что есть тут. Если кто-то знает, где написано больше — пишите, буду признателен.