Windows下正确配置cwRsync,每次向Linux同步代码时,不需输入密码

(已发内部论坛,重新整理转贴出来)
使用Visual Studio或者Source Insight来写后台代码时,必然会遇到代码如何从windows下同步到Linux开发机中进行编译的问题。常用方法有两种,一种是在Linux下配置Samba;另一种是使用Rsync来同步。
Samba毕竟是映射的网络硬盘,读写速度自然没有本机快,我个人不太喜欢直接用VS在其中工作。
在Windows下安装cwRsync客户端后,将Rsync的同步脚本作为一个快捷键,添加到VS的菜单栏中(我用的是Alt+T+U),代码有修改,则能很快的同步到Linux开发机中,不过烦人的是,每次都需输入密码。
通过添加ssh密钥,并正确配置同步脚本,即可解决。步骤如下:

1. 生成密钥
在Windows命令行中,执行C:\Program Files\cwRsync\bin>ssh-keygen.exe -t rsa ,根据提示,输入密钥文件路径名称,比如 C:\devkey.接着提示passphrase,可以不设置,直接回车。密钥文件生成到指定的目录中,私钥和公钥分别是devkey和devkey.pub。
2. 添加公钥到Linux
   登录到Linux开发机,进入目录 ~/.ssh/ ,将公钥 devkey.pub添加至该目录,并执行:
   $ cat devkey.pub >> authorized_keys
   $ chmod 700 authorized_keys
   (备注:关于Linux开发机下Key格式的问题,后面介绍。要保持添加的公钥同主机使用的SSH key格式一直,否则会失效)
3. 修改Windows同步脚本
   使用set命令设置HOME路径,并在ssh命令中使用-i参数指定刚才生成的私钥devkey。(根据个人需要设置同步目录)
   Windows批处理脚本示例:
REM ————BEGIN————
cd C:\Program Files\cwRsync\bin
c:
SETLOCAL
SET CWRSYNCHOME=%PROGRAMFILES%\cwRsync\bin
SET HOME=%HOMEDRIVE%%HOMEPATH%
rsync –perms –chmod a+rwx -avz –progress –exclude=”*svn*” –exclude=”project” -e “ssh -p 22 -l neilwu -i /cygdrive/c/devkey ” — “/cygdrive/e/test/” neilwu@192.168.18.129:/data/home/neilwu/test/
pause
REM ————END————–

4. 运行同步脚本

P.S. 
1. 必须使用SET命令设置HOME路径,否则会有提示“Could not create directory  ‘/home/neilwu/.ssh’”。cwrsync的示例脚本里已经有说明:Set HOME variable to your windows home directory. That makes sure that ssh command creates known_hosts in a directory you have access. 因为cwRsync使用的是cygwin的库,只是从cygwin中抽取了这几个命令出来,ssh命令在执行时需要记录Host公钥信息,也可以使用选项UserKnownHostsFile 来指定known_hosts文件路径,不过Windows下新建一个名称中有”.”的文件夹要在CMD中用命令”mkdir .ssh”。
2. ssh可以指定选项 -o StrictHostKeyChecking=no,来禁用远程主机的公钥检查。不过如果key不变时,只在首次有用。
3. 建议脚本执行完后,最后用pause命令暂停,可以检查一下本次同步的文件
4. 关于Key
cwRsync使用的是OpenSSH,刚才产生的devpub.key格式如下:
ssh-rsa AAAAB3Nza…
要确认Key格式的话,在你的Linux开发机上生成一对Key即可。运行ssh-keygen -t rsa,例如,我的公钥是:
—- BEGIN SSH2 PUBLIC KEY —-
Comment: “2048-bit RSA, converted from OpenSSH by neil”
AAAAB3NzaC1yc2EAAAABIwAA…
可以看到是2048位的Key,而且pubkey是SSH2格式的。
所以要对刚才Windows下生成的进行格式转换:ssh-keygen -ef devkey.pub > newdevkey.pub,然后用newdevkey.pub添加到Linux开发机的~/.ssh2/目录下,
同时,echo “Key newdevkey.pub” >> ~/.ssh2/authorization

5. 参考资料
Manpage of SSH,rsync
http://everythinglinux.org/rsync/
https://blogs.oracle.com/jkini/entry/how_to_scp_scp_and
———————
作者:yubaibai1111
来源:CSDN
原文:https://blog.csdn.net/butterflydog/article/details/7464966
版权声明:本文为博主原创文章,转载请附上博文链接!

评论被关闭.