rsync 使用ssh协议免密
rsync远程传输避免密码输入
每次rsync远程传输时都需要输入用户在远程机器上的密码,这样导致无法在后台自动运行rsync,可采用秘钥文件来替代人工输入密码的方式来解决。
第一步 在本地机器上使用ssh-keygen -t rsa 生成秘钥(一路回车即可)
[root@xxxx ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /usr/rsync_id_dsa
Enter passphrase (empty for no passphrase): //输入空
Enter same passphrase again: //输入空
Your identification has been saved in /usr/rsync_id_dsa.
Your public key has been saved in /usr/rsync_id_dsa.pub. 注意: 在提示输入key file path时,为避免覆盖已有的root帐户的id_rsa文件,将其存储到/usr/rsync_id_dsa 在提示输入文件密码时,直接按回车,采用空密码 最后生成了两个文件,分别存储私钥和公钥
第二步 将本地机器上的公钥传送到远端机器对应账户的.ssh目录下 (以csdn为例)
$ scp /usr/rsync_id_dsa.pub root@171.69.201.209:/home/csdn/.ssh
第三步 在远程机器上将得到的公钥导入对应账号的authorized_keys文件中 (以csdn为例)
$ cd /home/csdn/.ssh
$ cat rsync_id_dsa.pub >> authorized_keys # 使用 >> 防止覆盖 这样可以实现多个客户端的免密码登录
$ chown csdn:csdn authorized_keys # 不是必须
设置完成后,每次使用rsync时,添加 -i 参数 就可以避免每次输入密码了
$rsync -e "ssh -i /usr/rsync_id_dsa" /tmp/testfile csdn@remotehost:/tmp/
#rsync -av -e "ssh -i /usr/rsync_id_dsa" /orcl// csdn@61.132.54.173:/usr/test
如果 -i 参数也想省略 (使用如下步骤)
user$ ssh-keygen -t rsa
一路回车...
切换目录到 .ssh下 可以看到生成的公共秘钥文件 id_rsa.pub 将该文件发送到远程机器上
user$ scp -P 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 配置文件的格式
)rsyncd.conf配置文件由模块和参数组成,一个模块以写在方括号里的模块名称开始,直到下一个模块,模块里包含由“name = value”格式的参数。
)文件是基于行的,每一行代表一个模块名或者参数
------------------------ 一个配置文件的例子 -------------------------------------
# /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
查看端口
$netstat -lnp | grep LISTEN | grep tcp

在客户端进行同步
$rsync -avzP --port=端口号 ./testFile.txt rsync@*2.16.157.155::test1 --password-file=rsync.passwd # 将本地客户端的文件推到服务器端 使用test1模块的配置
$rsync -avzP ./testFile.txt rsync@*2.16.157.155::test2 --password-file=rsync.passwd # 将本地客户端的文件推到服务器端 使用test2模块的配置
$rsync -avzP rsync@*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/
rsync 使用ssh协议免密的更多相关文章
- Hadoop起步之图解SSH、免密登录原理和实现
1. 前言 emmm….最近学习大数据,需要搭建Hadoop框架,当弄好linux系统之后,第一件事就是SSH免密登录的设置.对于SSH,我觉得使用过linux系统的程序员应该并不陌生.可是吧,用起来 ...
- SSH localhost免密不成功 + 集群状态显示Configured Capacity: 0 (0 KB)
前一天运行hadoop一切安好,今天重新运行出现BUG.下面对遇到的bug.产生原因以及解决方法进行一下简单总结记录. [bug1]用ssh localhost免密登录时提示要输入密码. 原因分析:之 ...
- CentOS下SSH远程免密登录服务器
.5服务器上配置,通过ssh远程免密登录192. 1.安装SSH,此处省略 2.生成公钥和私钥,生成的秘钥默认在/root/.ssh/文件夹里面 [root@localhost ~ ::&&a ...
- ssh批量免密
expect命令在linux下实现批量ssh免密 发布时间:2017-11-27 08:41:39 投稿:laozhang 本次文章主要给大家讲解了在linux系统下用expect命令实现批量ssh免 ...
- ansible实现SSH配置免密互信
Ansible是用来处理大批量重复性操作的工具,只需要在一台机器上就可以远程控制所有机器,但前提是必须保证每台机器之间SSH可以相互免密登录.关于Ansible的安装和环境准备请参考Ansible环境 ...
- SSH实现免密登陆
SSH实现免密登陆配置 ssh实现免密码登录的配置过程,主要分为以下几个步骤: serverA生成密钥,包括私钥和公钥 serverA将公钥传到serverB上 serverA上配置serverB登陆 ...
- ssh判断免密登陆
ssh判断免密登陆 [root@jenkins ~]# vi /opt/release_code.sh #!/bin/bash . /etc/init.d/functions #echo $WORKS ...
- Hadoop SSH+IP、SSH+别名 免密登录配置
1.为什么要进行 SSH 无密码验证配置? Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个Da ...
- SSH之免密登陆
又来了,上头让小轩我在服务器中写一个Shell脚本,主要用来在机器B中定时备份机器A中的一些文件.那么,小轩是怎么想的呢? 在小轩的知识库里,现在有scp和ssh两个玩具.别的还真没有其他什么东西了. ...
随机推荐
- iOS - Xcode中从动态库剥离不需要的架构
自从iOS 8发布以来,开发人员已经能够利用动态库对iOS开发的好处.对于一般开发,为所有需要的架构设置一个单一的动态库是非常好的,所以您可以在所有设备和iOS模拟器上运行,而无需更改任何东西.然而, ...
- Redis主从同步之主库挂死解决方案
Redis实现了主从同步,但是主库挂死了,如何处理 方案:切换主库的身份 # 连接从库 [root@localhost redis-]# redis-cli -p # 取消从库身份 > slav ...
- MQTT协议及EMQ应用
MQTT是基于TCP/IP协议栈构建的异步通信消息协议,是一种轻量级的发布/订阅信息传输协议.MQTT在时间和空间上,将消息发送者与接受者分离,可以在不可靠的网络环境中进行扩展.适用于设备硬件存储空间 ...
- [daily][archlinux] pacman 安装软件时404的问题
时常,我们在archlinux上pacman安装一个软件时,会遇见如图这样的问题: “The requested URL returned error: 404” [classic_tong @ 2 ...
- c#版本23个设计模式
一.引言 对设计模式的学习,自己的感触还是很多的,因为我现在在写代码的时候,经常会想想这里能不能用什么设计模式来进行重构.所以,学完设计模式之后,感觉它会慢慢地影响到你写代码的思维方式.这里对设计模式 ...
- centos7单用户模式
1 - 在启动grub菜单,选择编辑选项启动 2 - 按键盘e键,来进入编辑界面 3 - 找到Linux 16的那一行,将ro改为rw init=/sysroot/bin/sh 如果用的是kvm做了c ...
- MySQL将某个数据库下的所有表的存储引擎修改为InnoDB类型语句
如何将mysql数据库中的MyISAM类型表更改为InnoDB类型的表 改单个表 ALTER TABLE TABLENAME ENGINE=InnoDB; ALTER TABLE TABLENAME ...
- 在linux上安装python
转自:https://www.cnblogs.com/qq631243523/p/10191726.html 一,前言 centos7默认是装有python的,咱们先看一下 [root@glh ~ 2 ...
- 分布式调度平台XXL-JOB源码分析-调度中心
架构图 上图是我们要进行源码分析的2.1版本的整体架构图.其分为两大块,调度中心和执行器,本文先分析调度中心,也就是xxl-job-admin这个包的代码. 关键bean 在application.p ...
- 题解 洛谷P2503 【[HAOI2006]均分数据】
看了眼题目和数据范围\(n \leq 20,k \leq 6\)自然想到了\(dfs\)分组求解,主要是被这道题坑自闭过. 然而硬来\(dfs\)肯定会被蜜汁\(T\)掉,因为暴力\(n\)个数所在集 ...