因为实验室要做两个软件的耦合计算,其中一个软件只有windows版本,重新编译会很麻烦(makefile太长),尝试用wine在linux运行也出错了,所以想到用远程调用的方法,虽然这样效率可能会比较低,但是应该可以实现。
一开始查资料发现好像可以通过SOCKET来实现,但是需要自己写代码(网上也有代码,但看不懂啊,自己也不是计算机专业的)。继续查资料发现通过talent和ssh等协议来实现,但是talent没法传文件,所以决定用ssh来实现调用和文件传递。
在windows下实现ssh功能的软件不少,我用的是bitvise ssh,在官网上https://www.bitvise.com/下载其服务端应用。根据http://blog.csdn.net/gsls200808/article/details/45127781上的介绍安装bitvise ssh server 并创建了虚拟账号。
通过密码访问的方式,可以成功连接,但要实现程序自动调用需通过公钥访问的方式。在Linux下产生秘钥(可参考http://blog.csdn.net/wlaiiaaag/article/details/70849347或自行百度),因为bitvise ssh 使用的公钥要求是ssh2版本,在linux下将产生的公钥id_rsa.pub转换为ssh2版本id_rsa_2.pub($ssh-keygen -e -f id_rsa.pub > id_rsa_2.pub),将公钥id_rsa_2.pub拷贝到windows主机,并在bitvise ssh服务端导入该公钥,最后将linux主机中的ssh1公钥id_rsa.pub删除(必须删除,否则无法连接)。
以上windows版本为windows 7,可以使用bitvise ssh服务端的虚拟账号功能连接,但是在windows的service版本中无法使用虚拟账号连接,必须使用真实的windows账户。