zoukankan      html  css  js  c++  java
  • rsync 使用ssh协议免密

    rsync远程传输避免密码输入

    每次rsync远程传输时都需要输入用户在远程机器上的密码,这样导致无法在后台自动运行rsync,可采用秘钥文件来替代人工输入密码的方式来解决。

    第一步 在本地机器上使用ssh-keygen -t rsa 生成秘钥(一路回车即可)

    1 [root@xxxx ~]$ ssh-keygen -t rsa
    2 Generating public/private rsa key pair.
    3 Enter file in which to save the key (/root/.ssh/id_rsa): /usr/rsync_id_dsa
    4 Enter passphrase (empty for no passphrase):   //输入空
    5 Enter same passphrase again:   //输入空
    6 Your identification has been saved in /usr/rsync_id_dsa.
    7 Your public key has been saved in /usr/rsync_id_dsa.pub.
    8 
    9 注意: 在提示输入key file path时,为避免覆盖已有的root帐户的id_rsa文件,将其存储到/usr/rsync_id_dsa 在提示输入文件密码时,直接按回车,采用空密码 最后生成了两个文件,分别存储私钥和公钥

    第二步 将本地机器上的公钥传送到远端机器对应账户的.ssh目录下 (以csdn为例)

    1 $ scp /usr/rsync_id_dsa.pub root@171.69.201.209:/home/csdn/.ssh

    第三步 在远程机器上将得到的公钥导入对应账号的authorized_keys文件中 (以csdn为例)

    1 $ cd /home/csdn/.ssh
    2 $ cat rsync_id_dsa.pub >> authorized_keys  # 使用 >> 防止覆盖 这样可以实现多个客户端的免密码登录
    3 $ chown csdn:csdn authorized_keys  # 不是必须

    设置完成后,每次使用rsync时,添加 -i 参数 就可以避免每次输入密码了

    1 $rsync -e "ssh -i /usr/rsync_id_dsa" /tmp/testfile csdn@remotehost:/tmp/  
    2 #rsync -av -e  "ssh -i /usr/rsync_id_dsa" /orcl/20160926/ csdn@61.132.54.173:/usr/test

    如果 -i 参数也想省略 (使用如下步骤)

    user$ ssh-keygen -t rsa
    一路回车...
    切换目录到 .ssh下 可以看到生成的公共秘钥文件 id_rsa.pub 将该文件发送到远程机器上
    user$ scp -P 8000 id_rsa.pub userName@156.23.12.11:/home/userNamae/.ssh/id_rsa.pub_test
    登录远程机器,将 id_rsa.pub_test 的内容追加到 authorized_keys, 使用追加的方式是为了不覆盖其他远程机器的公共秘钥
    $ cat id_rsa.pub_test >> authorized_keys
    测试能否无密码登录
    user$ ssh userName@156.23.12.11

    rsync --deamon 模式

    服务器端:只有一个,放置 rysncd.conf 默认的位置 /etc/rsyncd.conf
    客户端:有多个,放置密码文件

    使用 rsync --daemon 的步骤

    第一步 在服务器端编写 rsync.conf,位置任意,默认为 /etc/rsync.conf
    第二步 在服务器端编写用户的账号密码文件(即rsyncd.secrets) 权限必须是600
    第三步 启动 sudo rsync --daemon
    第三步 如果想无密码传输,在客户端编写相应用户的密码文件(即rsync.passwd)  权限必须是600
    第四步 在客户端使用 rsync 进行传输 指定模块和密码文件

    rsyncd.conf 配置文件的格式

    1)rsyncd.conf配置文件由模块和参数组成,一个模块以写在方括号里的模块名称开始,直到下一个模块,模块里包含由“name = value”格式的参数。
    2)文件是基于行的,每一行代表一个模块名或者参数
    ------------------------ 一个配置文件的例子 -------------------------------------
    # /etc/rsyncd: configuration file for rsync daemon mode

    # See rsyncd.conf man page for more options.

    # configuration example:
    # port = 873 默认端口
    uid = root
    gid = root
    use chroot = no
    max connections = 4
    pid file = /home/leo/rsyncDaemon/rsyncd.pid
    log file = /home/leo/rsyncDaemon/rsyncd.log
    lock file = /home/leo/rsyncDaemon/rsyncd.lock
    # exclude = lost+found/
    # transfer logging = yes
    # timeout = 900
    # ignore nonreadable = yes
    # dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

    # [ftp]
    #        path = /home/ftp
    #        comment = ftp export area

    [test1]
    path = /home/leo/rsyncDaemon1/
    read only = no
    list = true
    auth users = rsync
    secrets file = /home/leo/rsyncDaemon/rsyncd.secrets
    list = no

    [test2]
    path = /home/leo/rsyncDaemon2/
    read only = no
    list = true
    auth users = rsync
    secrets file = /home/leo/rsyncDaemon/rsyncd.secrets
    list = no

    在服务器端启动

    $sudo rsync --daemon --config=/.../.../rsync.conf # 如果不指定配置文件,默认为/etc/rsync.conf

    查看 rsync --daemon 的运行

    $ps -ef | grep rsync

    关闭 rsync --daemon 的运行

    $ kill 9769

    查看端口

    $netstat -lnp | grep LISTEN | grep tcp

    在客户端进行同步

    $rsync -avzP --port=端口号 ./testFile.txt  rsync@1*2.16.157.155::test1  --password-file=rsync.passwd  # 将本地客户端的文件推到服务器端 使用test1模块的配置
    $rsync -avzP ./testFile.txt  rsync@1*2.16.157.155::test2  --password-file=rsync.passwd  # 将本地客户端的文件推到服务器端 使用test2模块的配置
    $rsync -avzP rsync@1*2.16.157.155::test1 ./  --password-file=rsync.passwd  # 将服务器端的数据拉到本地客户端

    注意事项:

    -- rsync --daemon 开启需要管理员权限

    -- 端口是否开启,默认是873,使用 netstat 命令查看端口信息

    -- 防火墙问题,使用 iptables 修改防火墙允许的访问端口

     rsync 加密传输

    使用 ssh -c 参数指定加密算法

    rsync -azrP -e "ssh -c aes256-ctr -p 2020" filename unserName@128.52.16.22:/home/leo/
  • 相关阅读:
    独立集
    密码
    【题解】[WC2006]水管局长
    【题解】[USACO12JAN]视频游戏的连击Video Game Combos
    【题解】HAOI2012高速公路
    【题解】洛谷P2418 yyy loves OI IV
    【题解】HNOI2008GT考试
    【哈哈哈哈】单词本
    【题解】CQOI2015任务查询系统
    【题解】洛谷P1975排序
  • 原文地址:https://www.cnblogs.com/0820LL/p/9627047.html
Copyright © 2011-2022 走看看