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. 运行同步脚本
附加说明:
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
----------------------------------------------
1、如果想要获得最大化的安全性,禁止rsync服务以口令登录,可以修改sshd_conf中的PasswordAuthentication yes为no
2.另外,最好禁止root用户的登陆,修改/etc/ssh/sshd_config里的“permitrootlogin"为no,可禁止root用户登陆。
3.也可以限制某个用户或者用户组的登陆,使用"denyusers"和"denygroups"即可。
----------------------------------------------
windows的客服端上如何使用putty通过秘钥登陆,步骤如下:
a.将私钥复制到windows客户端,使用puttygen导入私钥,点击“save private key”进行私钥的转换
b.打开putty,添入“hostname”、“port”,然后选择左面导航里的“Connection”->“Data”,在“Auto-login username”里添入你要登陆的用户名;在“SSH”->“Auth”里导入转换后的秘钥文件。
c.单击“open”登陆。