# Synergy

Synergy es un software que permite compartir un teclado y un ratón entre varias computadoras sin la necesidad de ningún hardware adicional. También es capaz de compartir el portapapeles entre las diferentes máquinas permitiendo el Copy & Paste de una a otra. A este tipo de aplicaciones se le llama KVM Software de (Keyboard, Video, Mouse).
El objetivo principal es unir los escritorios de cada una de las computadores para darle la ilusión al usuario de tener un único escritorio ampliado.
Synergy es multiplataforma, de manera que puede integrar equipos que operan con diferentes sistemas operativos, tales como Unix, GNU/Linux, Macintosh y Windows.
Synergy es parcialmente Open Source bajo la licencia GNU General Public License. La interfaz gráfica y algunos componentes de Windows son propietarios.

## Funcionamiento

Funciona bajo una arquitectura Cliente/Servidor. El servidor comparte su ratón y teclado a los diferentes clientes que existan. A la vez, todas las máquinas en cuestión tienen que estar conectadas en red, donde se permita el uso del protocolo TCP/IP.
Las acciones realizadas sobre el ratón y el teclado, son reflejadas en el escritorio donde se encuentre posicionado el puntero.
Para pasar el ratón y el teclado de una máquina a otra, simplemente el usuario mueve el puntero del mouse hacia un costado de su escritorio, y el puntero aparecerá en el escritorio de otra máquina. En cuanto al teclado, las acciones realizadas en el mismo se realizarán en la máquina en la cual se encuentre el puntero en el momento de su uso. Esto dará una sensación de tener una sola computadora con muchos monitores.
El servidor captura los eventos del ratón, del teclado, del portapapeles y del protector de pantalla, los cuales se reenvían a los clientes correspondientes, a través del protocolo TCP/IP.

## Instalación

* Se debe descargar la aplicación de la página del proyecto de sourceforge de Synergy.
* Instalar la aplicación en cada una de las máquinas que se desee conectar. Para el Servidor y el Cliente se instala la misma aplicación, lo que varía es en el modo en que se ejecuta. La máquina Servidor correrá el Synergy en modo Servidor y las máquinas clientes deberán correr Synergy en modo cliente.
* Se deben conectar las máquinas en red (TCP/IP). En el caso de tener un Firewall instalado se debe habilitar el puerto 24800 por el cual Synergy se comunica:
* Se debe decidir cual sérá la máquina Servidor, que compartirá su mouse y teclado con las máquinas clientes. También se deberá elegir donde estarán ubicadas las pantallas de cada computadora Cliente respecto al Servidor y respecto a las otras máquinas Cliente.
* Se debe configurar el Servidor de acuerdo a lo decidido en el paso anterior. En Linux, se debe crear un archivo de configuración (synergy.conf), cuya estructura sea, por ejemplo de la siguiente manera:
En la sección de screens se lista los nombres de cada equipo que se conectará, y en la sección links se escriben las relaciones entre las pantallas de estos equipos. El hecho que Cliente2 este a la derecha de Servidor, no implica que Servidor este a la izquierda de Cliente 2, es necesario especificar ambas relaciones.
* Ejecutar el servidor. Para correr el Servidor de Synergy en un Linux se debe ejecutar el siguiente comando: synergys -f --config synergy.conf donde -f es para correr synergy en modo foreground, --config indica el archivo de configuración creado en el paso anterior.
* Ejecutar los clientes. Para correr el Cliente en Linux, ejecutar synergyc -f nombre-host-servidor donde -f es para correr Synergy en modo foreground, y nombre-host-servidor es el nombre del host del Servidor del Synergy o la IP del mismo.

## Futuras Mejoras

* La posibilidad de abrir el menú de Synergy, y modificar la configuración, sin tener que reiniciar la aplicación.
* La posibilidad de utilizar un mecanismo de autenticación. Cualquier computadora puede conectarse al Servidor si el nombre del Cliente es conocido en él.
* La posibilidad de utilizar un mecanismo de cifrado. Todos los datos transferidos entre el Servidor y el Cliente no se hacen bajo ningún mecanismo de cifrado, permitiendo que alguien pueda capturar los eventos presionados en el teclado, y de esta manera tener conocimiento, por ejempplo, de una contraseña.
* Una interfaz gráfica completa para Linux y Mac. Synergy no cuenta con interfaz gráfica para Linux ni para Mac, solamente para Windows. Existe una aplicación que actúa como interfaz gráfica para configurar en Linux y Mac, llamado QuickSynergy. De todas formas, la misma solo permite configurar las características básicas.
* La posibilidad de compartir el monitor de la misma manera que se comparte el mouse y el teclado. De esta manera, Synergy se convertiría en una solución KVM completa.
* La posibilidad de un “Drag & Drop” entre los equipos, fortificando la ilusión que se desea tener un único escritorio

## Conexión segura

Synergy no utiliza ningún mecanismo de autenticación ni de cifrado. Cualquier computadora puede conectarse al Servidor si el nombre del Cliente es conocido en él. Por otro lado, todos los datos transferidos entre el Servidor y el Cliente no se hacen bajo ningún mecanismo de cifrado, permitiendo que alguien pueda capturar los eventos presionados en el teclado, y de esta manera tener conocimiento por ejemplo de una contraseña. Por lo tanto, Synergy debería ser usado en redes confiables. Sin embargo, existen herramientas que permiten dar cifrado y autenticación como SSH.

### Utilizar OpenSSH con Synergy
#### Configurar el servidor

Simplemente es necesario tener instalado el servidor de OpenSSH en la misma computadora que el servidor de Synergy.

#### Configurar el cliente

Instalar el cliente de OpenSSH en cada computadora cliente. Luego se debe iniciar el cliente de OpenSSH usando “port forwarding”:
donde nombre-servidor debe ser el nombre o la ip del servidor de SSH y de Synergy. 24800 es el puerto por defecto que utiliza Synergy. Luego se inicia el cliente normalmente con la excepción que se usa localhost como el nombre del servidor:
De esta manera todas las comunicaciones entre el Cliente y el Servidor son pasadas a través de OpenSSH.

## Modelo de negocio

A partir de septiembre de 2014 el sitio de Synergy pasó de ofrecer la herramienta de forma gratuitamente a un modelo por el cual se debe pagar. Sin embargo, existe un enlace interno para acceder gratuitamente a versiones antiguas. También se puede acceder a versiones nightly (inestables) compiladas a partir del código fuente en Github.