User Tools

Site Tools


synergy

Synergy

Project : Github

:!: Barrier / Opensource forked from 1.x after it became paid. Project : Barrier

Installation

:!: Since version 2.x there is GUI for synergy available and there is no hm.sh script in source.
I've chose to use 2.x since it uses openssl to secure connection.

Linux

Most linux distro has package available.

| fedora
sudo dnf install synergy

Mac

  git clone https://github.com/symless/synergy-core.git
  git checkout v2.0.0-stable
  brew update
  brew upgrade
  brew info qt
  export CMAKE_PREFIX_PATH="/usr/local/Cellar/qt/5.10.1/Frameworks/"
  export LD_LIBRARY_PATH=$(brew --prefix openssl)/lib
  export CPATH=$(brew --prefix openssl)/include
  export PKG_CONFIG_PATH=$(brew --prefix openssl)/lib/pkgconfig
  mkdir build
  cmake -DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 -DCMAKE_OSX_ARCHITECTURES=x86_64
  make

Once building binary is done, Copy files to ~/bin/ so it can be used used within path.

Post Build

Server

  openssl req -x509 -nodes -days 3650 -subj /CN=Synergy -newkey rsa:4096 -keyout ~/.synergy/SSL/Synergy.pem -out ~/.synergy/SSL/Synergy.pem
  openssl x509 -fingerprint -sha1 -noout -in ~/.synergy/SSL/Synergy.pem > ~/.synergy/SSL/Fingerprints/Local.txt
  sed -e "s/.*=//" -i ~/.synergy/SSL/Fingerprints/Local.txt
  cat ~/.synergy/SSL/Fingerprints/Local.txt # This is where you get server key hash

Client

Copy server key hash to following file.

~/Library/Synergy/SSL/Fingerprints/TrustedServers.txt

Starting server / client

In my case server is on linux and client is on mac.

Server

Configuration
| ~/.synergy.conf
# sample synergy configuration file
#
# comments begin with the # character and continue to the end of
# line.  comments may appear anywhere the syntax permits.
# +-------+  +--------+ +---------+
# |Laptop |  |Desktop1| |iMac     |
# |       |  |        | |         |
# +-------+  +--------+ +---------+
 
 
section: screens
	# three hosts named:  Laptop, Desktop1, and iMac
	# These are the nice names of the hosts to make it easy to write the config file
	# The aliases section below contain the "actual" names of the hosts (their hostnames)
	desk:
	mac:
end
 
section: links
	# iMac is to the right of Desktop1
	# Laptop is to the left of Desktop1
	desk:
	  right = mac
 
	# Desktop1 is to the right of Laptop
	mac:
	  left = desk
 
end
 
section: aliases
	# The "real" name of iMac is John-Smiths-iMac-3.local. If we wanted we could remove this alias and instead use John-Smiths-iMac-3.local everywhere iMac is above. Hopefully it should be easy to see why using an alias is nicer
	desk:
	  desk
 
	mac:
	  mac
end

Now server can be using following command.

| start server
/usr/bin/synergy-core --server --name desk -c /tmp/Synergy.TJ6658 --address :24800 -c ~/.synergy.conf --enable-drag-drop --enable-crypto --daemon

Client

:?: One can also create the alias in bash profile

| start client
~/bin/synergy-core --client --enable-crypto -n mac desk

Autossh ( If do not want to use built-in crytpo library )

Opensource version of synergy does not support encryption any more.
In order to secure data transmitted over network i use ssh tunnel, they suggest the same on their website.
Best bet is to use autossh, so if you are roaming between location it will auto connect when you are on same network.

Installation

brew install autossh

Setup Tunnel

autossh -f -v -M 24800 -N -R 24800:localhost:22 user@hostname

Client
Set ServerIP = 'localhost'

That should do it.

synergy.txt · Last modified: 2020/12/22 23:37 by k2patel