synergy是一款不用任何硬件就可以使多台计算机共享一套键盘和鼠标,这个工具用起来非常方便,对于要使用多台计算机工作的程序缘来说,可谓是个福利。

对于许多Linux新手而言,安装成功一个软件并成功运行,是非常耗费时间和精力的,我今天安装synergy并实在CentOS和Win7之间现键盘和鼠标的共享,花费了一个下午的时间,因此在这里写下这篇总结,以供其他CentOS新手参考和自己以后的温习使用。

在具体说明如何安装synergy之前,先说一下这款软件的几个专用词语:服务器端(键盘和鼠标的宿主机器),客户端(要共享服务器端键盘和鼠标的机器),Screen Name (屏幕名称,每一个名称代表一个主机)。

安装步骤:

(1)在官网http://synergy-foss.org/download/下载synergy rpm软件包,进行CentOS安装,我下载了一个1.4版本的,但是使用命令rpm -ivh synergy.rpm的时候提示libcurl.so.4依赖错误,没有找到libcurl.so,但是我find了一下,在目录/usr/lib中确实有libcurl.so.4,于是我把/usr/lib下的libcurl.so.4 copy到rpm安装包所在的目录,继续安装,但是仍然不行,提示错误:

error: Failed dependencies:
     libcurl.so.4(CURL_OPENSSL_3) is needed by synergy-1.4.16-1.i386

我认为是软件包找不到libcurl.so.4,于是我又把libcurl.so.4复制到/lib下,继续安装,仍然提示上面的错误,Google了很久依然没有找到答案,我真不知道该怎么办了,于是想还是算了,跑到CentOS自带的添加/删除软件功能上安装了一个synergy 1.3.6版本的,安装的synergy的可执行文件在/usr/bin里面,使用命令ll | grep synergy就可以看到有两个文件,一个是synergyc客户端运行程序,另一个是synergys服务器端运行程序,如果想要让CentOS作为客户端,就运行/usr/bin/synergyc server-ip,如果CentOS作为服务器端,就与行/usr/bin/synergys -f --config configfile,其中-f是指在前台运行,也就是一直在命令行中显示运行,这里也可以使用--daemon选项使得该程序作为服务运行,服务就是在后台运行。关于更多命令的选项可以使用--help来查看。

(2)修改配置文件,使用/usr/bin/synergys --help命令可以看到,此软件的配置文件一般在用户的主文件夹下的.synergy.conf,即~/.synergy.conf,或者是在/etc文件夹下的synergy.conf,注意在用户主文件夹下的带有".",而在/etc文件夹下的没有".",这个估计是尊重了Linux的习惯吧,我看一般的在用户主文件夹中的配置文件都加上了".",例如.bashrc之类的,而/etc本来就是放置配置文件的地方,因此也不用加什么"."用户也知道里面都是配置文件,以上这些属于个人猜测,对不对也不知道。

访问/usr/share/doc/synergy1.3.6下示例配置文件synergy-basic.conf可以看到,在配置文件中有三部分。

第一个部分是screens,也就是前面说的screen name,随便起名,例如我起了centos:和win7:这两个名字,注意冒号。两个名字之间用换行隔开,第一个是服务端的名字,第二个是客户端的名字。内容如下:

section: screens
     centos:
     win7:
 end

第二个部分是links,其实就是两台机器的位置关系,有上下左右四个位置。首先对于centos来说,左边是win7。而对于win7来说,右边是centos,因此,此部分内容如下:

section: links
     centos:
         left  = win7
     win7:
         right = centos 
 end

第三部分是aliases(别名),这个别名就和第一部分的screens对上号了,我们在screen中随便起了个名字,以方便我们的记忆,但是要让synergy识别服务器端和客户端的主机名hostname,这里的别名就是要将centos对应centos的hostname,win7对应计算机名,我的配置文件的内容如下,其中centos的hostname为linux.zl,而win7的计算机名为zl-PC。在这里我想说,win7的别名也可以命名为主机的ip地址,但是centos必须是主机名,要不然会报类似这样的错误unknown screen name `linux.zl',对于这一点我也不知到为什么。

section:aliases
     centos:
         linux.zl 
     win7: 
         zl-PC
 end

(3)启动服务器端,运行/usr/bin/synergys -f(--daemon) --config ~/.synergy.conf,然后使用ps -aux | grep synergy查看是否有此进程。若有,则启动成功,否则,失败。

(4)在官网下载win7版本的安装文件.exe文件,然后安装。选择client选项,配置服务器端的主机host name,一般都是用ip地址,然后点击option下的advanced按钮,配置此计算机的Screen Name,这里的Screen Name要与服务器端的配置文件中客户端的Screens中的一样,我的是win7,要不然,无法访问。然后点击test按钮测试一下,若成功,会出现NOTE:connected to server. 否则配置失败。

PS1: 以上过程都正确的情况下,有可能win7中的程序总是出现Failed to connect ip的字样,这是由于centos的防火墙处于打开状态,并且synergy这个软件默认使用的端口24800并未在防火墙的规则之中,这种情况可以使用以下两种方法解决(就是这个问题困扰了我一个下午):

(1)推荐方法--->可以配置/etc/sysconfig/iptables文件,加上一行-A INPUT -m state --state NEW -m tcp -p tcp --dport 24800 -j ACCEPT,表示外部可以访问此端口。然后重启防火墙

/etc/init.d/iptables restart

(2)运行/etc/init.d/iptables stop(off)关闭防火墙,其中off为永久关闭,不推荐。

PS2:参考资料

防火墙操作实例:

win7作为服务器端,centos作为客户端。