编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

Win用rsync通过免密ssh登录同步文件到linux

wxchong 2024-07-16 10:29:35 开源技术 6 ℃ 0 评论

之前一篇《2张图1个表说明rsync的三种模式11种命令格式》针对rsync的传输方式做了整理总结,这次需要在Windows上测试rsync通过ssh同步文件到linux,需要解决两个问题:

1.windows服务器安装rsync客户端软件;

2.windows服务器免密码ssh登录linux服务器;

具体实现如下:

一、服务器环境:

注意rsync约定本地主机为客户端、远程主机为服务器端,此次执行同步命令在windows服务器上执行故windows服务器为本地主机即客户端,对应的linux服务器为远程服务器即服务器端,以下简称为【客户端】【服务器端】;

客户端:Windows 2003 SP2

服务器端:CentOS 6.7 64位、rsync 3.0.6

二、windows服务器安装rsync:

windows系统使用cwRsync,官方网站:https://www.itefix.net/cwrsync,rsync的官方网站cwRsync也是链接到该网站:

截止本文发布日期cwRsync免费版最新版本为:cwRsync_5.5.0_x86_Free,只有32位,没有64位,只有客户端,没有server端,收费版本均提供;

免费版包含rsync 3.1.2 、OpenSSH 7.1p 、OpenSSL 1.0.2e、Cygwin 2.3.1。

注:Windows系统如果要使用服务端cwRsync,网络上可以找到的版本为:cwRsync_Server_Installer 4.1.0,还有一个4.2.0,以上两个暂未测试,仅供参考;

下载cwRsync_5.5.0_x86_Free并安装:

解压后,复制到D:\tools\cwRsync5.5.0;

安装很简单:执行cwrsync.cmd批处理,来看一下批处理代码:

@ECHO OFF

REM *****************************************************************

REM

REM CWRSYNC.CMD - Batch file template to start your rsync command (s).

REM

REM *****************************************************************

REM Make environment variable changes local to this batch file

SETLOCAL

REM Specify where to find rsync and related files

REM Default value is the directory of this batch file

SET CWRSYNCHOME=%~dp0

REM Create a home directory for .ssh

IF NOT EXIST %CWRSYNCHOME%\home\%USERNAME%\.ssh MKDIR %CWRSYNCHOME%\home\%USERNAME%\.ssh

REM Make cwRsync home as a part of system PATH to find required DLLs

SET CWOLDPATH=%PATH%

SET PATH=%CWRSYNCHOME%\bin;%PATH%

REM Windows paths may contain a colon (:) as a part of drive designation and

REM backslashes (example c:\, g:\). However, in rsync syntax, a colon in a

REM path means searching for a remote host. Solution: use absolute path 'a la unix',

REM replace backslashes (\) with slashes (/) and put -/cygdrive/- in front of the

REM drive letter:

REM

REM Example : C:\WORK\* --> /cygdrive/c/work/*

REM

REM Example 1 - rsync recursively to a unix server with an openssh server :

REM

REM rsync -r /cygdrive/c/work/ remotehost:/home/user/work/

REM

REM Example 2 - Local rsync recursively

REM

REM rsync -r /cygdrive/c/work/ /cygdrive/d/work/doc/

REM

REM Example 3 - rsync to an rsync server recursively :

REM (Double colons?? YES!!)

REM

REM rsync -r /cygdrive/c/doc/ remotehost::module/doc

REM

REM Rsync is a very powerful tool. Please look at documentation for other options.

REM

REM ** CUSTOMIZE ** Enter your rsync command(s) here

rem 用来注释和增加垂直间距看起来美观。

除掉大量的rem后只有5几句:

SETLOCAL

SET CWRSYNCHOME=%~dp0

IF NOT EXIST %CWRSYNCHOME%\home\%USERNAME%\.ssh MKDIR %CWRSYNCHOME%\home\%USERNAME%\.ssh

SET CWOLDPATH=%PATH%

SET PATH=%CWRSYNCHOME%\bin;%PATH%

SETLOCAL开始批处理文件中环境变量的本地化。本地化将持续到出现匹配的 endlocal 命令或者到达批处理文件结尾为止。

%~dp0:获取批处理所在的目录

%0代指批处理文件自身

%~d0 是指批处理所在的盘符

%~dp0 是盘符加路径

第二句:设置环境变量CWRSYNCHOME为批处理所在的目录;

第三句:检查目录是否存在,不存在则创建目录;

第四句:设置环境变量

第五句:设置环境变量

双击安装,会在D:\tools\cwRsync5.5.0目录下生成home\Administrator\.ssh目录,整体来看就是创建该目录;

三、设置免密码ssh登录linux服务器:

  1. 在windws上使用ssh-keygen.exe生成私钥公钥密钥对;

    D:\tools\cwRsync5.5.0\home\Administrator\.ssh目录会生成:id_rsa、id_rsa.pub两个文件;

  2. 将id_rsa.pub文件上传到linux服务器:不管通过什么方式,比如我的环境可以从其他跳转机登录linux服务器但不知道密码,就可以通过ftp上传到FTP服务器,然后登录linux从FTP下载。

    注:完成后win主机删除掉id_rsa.pub,如果通过其他服务器中转也记得删掉。

  3. 将id_rsa.pub文件内容追加到authorized_keys文件中:

    cat id_rsa.pub >> /root/.ssh/authorized_keys

  4. 设置authorized_keys文件权限为600;

  5. 编辑/etc/ssh/sshd_config文件,如下图:删除标示两行前边的#,默认是注释掉的。

  6. 重启sshd:service sshd restart

  7. Windows主机上修改id_rsa文件权限:删除掉其他用户权限;



四、测试免密码登录及总结:

容易忽略掉的问题,造成错误:

  1. 修改sshd_config文件:

    PubkeyAuthentication yes

    AuthorizedKeysFile .ssh/authorized_keys

    默认是注释状态,修改后重启sshd服务;

  2. 设置authorized_keys文件权限为600;

  3. 设置D:\tools\cwRsync5.5.0\home\Administrator\.ssh\id_rsa私钥文件权限;

最后总结:

  1. cwRsync包含了ssh.exe和ssh-keygen.exe,如果是没有安装cwRsync的windows主机可以安装openssh;

  2. 在服务器端生成密钥,将私钥下载到home\Administrator\.ssh目录,将公钥追加到/root/.ssh/authorized_keys文件也可以登录;

  3. cwRsync免费版已经不提供服务端软件了。

  4. 注意密钥文件的权限设置。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表