通过密钥来实现无密码远程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. 运行同步脚本


附加说明:
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”登陆。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值