首页 > 编程知识 正文

sshpass远程执行脚本(ssh远程登录命令)

时间:2023-05-05 11:44:52 阅读:69841 作者:4394

很明显,rsync远程同步必须输入密码而不进行设置,并且在脚本运行时不可用

问题:rsync如何带着密码进行远程同步,而不需要再次输入密码呢?

解决方法:为新的rsync远程同步帐户设置密码

注意:解决方法有很多。 可以使用环境变量,也可以使用ssh私钥,但相对而言,该方式是安全的

以下示例是从客户端192.168.1.100到服务端192.168.1.200的同步

一、首先先安装rsync(安装方法很多,可以自己搜索,有不知道的地方可以评论)客户端服务端需要安装rsync

http://www.Sina.com/http://www.Sina.com /

vim /etc/rsyncd.conf

这个文件可能没有,没关系。 没有的东西请自己做新的

配置文件的内容如下

#/etc/rsyncd :配置文件forrsyncdaemonmode # see rsyncd.confmanpageformoreoptions.# 配置扩展: uid=根GID=rootusechroot=nomax connections=20 pidfile=/var/run/rsyncd.PID log file=//var/run/rsync.lock readonly=false # exclude=lostfound/# transfer logging=yes # time out=dont compress=*.gz * FTP # comment=ftpexporrt hy API/static/block/book/auth users=ytsyncsecretsfile=/etc/rsyncd.passwd其中auth useswd

设置secrets file=/etc/rsyncd.passwd密码文件

配置文件设置完成后,显然需要设置密码

echo ' rsync _ YC :123456 '/etc/rsyncd.passwd

设定权限

chmod 600 /etc/rsyncd.passwd #注意权限

检查服务是否打开

PS-ef-grep rsync-v grep

打开时,杀死进程

kill -9端口号

重新启动rsync

rsync----Daemon

如果配置文件位于etc下,则可以使用rsync --daemon重新启动。 否则,添加config=配置文件路径

例如,rsync---- daemon---- config=/var/rsyncd.conf

重新启动可能会报告错误

failedtocreatepidfile/var/run/rsyncd.PID :文件exists

解决方法: rm -rf /var/run/rsyncd.pid; Rsync服务--- -重新启动daemon

二、配置远程账号密码

客户端喜欢创建文件,建在哪里? 在文件中写下密码,如/var/rsync/rsync.pass。 例如123456就结束了。 我不需要其他东西。 然后,如果在输入rsync命令时使用--password-file=/etc/rsync.pass参数指定密码文件的位置,则Ok坑密码文件需要600权限

操作步骤

echo ' 123456 '/var/rsync/rsync.pass

chmod 600 /var/rsync/rsync.pass

1. 先看下服务端配置

rsync-avz-- password-file=/var/rsync/rsync.pass/home/book/rsync _ YC @ 192.168.1.200:360 bok

执行可能会报告错误

rsync :故障诊断连接tto 120.55.58.172 (120.55.58.172 ) :连接时间o

ut (110)
rsync error: error in socket IO (code 10) at clientserver.c(125) [sender=3.1.2]

解决方法:

ps -ef|grep rsync  |grep -v grep        先确定下服务是否已经开启,没有就去开启在重试一下

netstat   -nultp         如果服务已经开启,看下是否有rsync的873端口

如果上面的都没问题,那就是服务器安全组没开放端口,添加下即可

四、附录

配置文件其他常用的配置参数

comment = BACKUP attachment           # 注释
ignore errors              # 忽略一些无关的IO错误
read only = false          # 设置为非只读,即可以传至服务器的相应目录。
list = false                # 不允许列文件
exclude = test/ test.php      #设置不同步的目录或文件用空格隔开

hosts allow = all     #允许连接服务器的主机IP地址,如果多个ip则用空格隔开
hosts deny = 172.25.0.0/24  #禁止连接服务器的主机IP地址,也可为*,表示所有。

两种 rsync 服务运行方式都需要配置 rsyncd.conf,其格式类似于 samba 的主配置文件

全局参数

在全局参数部分也可以定义模块参数,这时该参数的值就是所有模块的默认值

address --在独立运行时,用于指定的服务器运行的 IP 地址;由 xinetd 运行时将忽略此参数,使用命令行上的 –address 选项替代。默认本地所有IP

port --指定 rsync 守护进程监听的端口号。 由 xinetd 运行时将忽略此参数,使用命令行上的 –port 选项替代。默认 873

motd file --指定一个消息文件,当客户连接服务器时该文件的内容显示给客户

pid file --rsync 的守护进程将其 PID 写入指定的文件

log file --指定 rsync 守护进程的日志文件,而不将日志发送给 syslog

syslog facility --指定 rsync 发送日志消息给 syslog 时的消息级别

socket options --指定自定义 TCP 选项

lockfile --指定rsync的锁文件存放路径

timeout = 600 --超时时间

模块参数

模块参数主要用于定义 rsync 服务器哪个目录要被同步。模块声明的格式必须为 [module] 形式,这个名字就是在 rsync 客户端看到的名字,类似于 Samba 服务器提供的共享名。而服务器真正同步的数据是通过 path 来指定的

基本模块参数

path --指定当前模块在 rsync 服务器上的同步路径,该参数是必须指定的

comment --给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户

模块控制参数

use chroot = --默认为 true,在传输文件之前首先 chroot 到 path 参数所指定的目录下;优点,安全;缺点,需要 root 权限,不能备份指向 path 外部的符号连接所指向的目录文件

uid = --指定该模块以指定的 UID 传输文件;默认nobody

gid = --指定该模块以指定的 GID 传输文件;默认nobody

max connections --最大并发连接数,0为不限制

lock file --指定支持 max connections 参数的锁文件。默认 /var/run/rsyncd.lock

list --指定当客户请求列出可以使用的模块列表时,该模块是否应该被列出。默认为 true,显示

read only = --只读选择,也就是说,不让客户端上传文件到服务器上。默认true

write only = --只写选择,也就是说,不让客户端从服务器上下载文件。默认false

ignore errors --忽略IO错误。默认true

ignore nonreadable --指定 rysnc 服务器完全忽略那些用户没有访问权限的文件。这对于在需要备份的目录中有些不应该被备份者获得的文件时是有意义的。 false

timeout = --该选项可以覆盖客户指定的 IP 超时时间。从而确保 rsync 服务器不会永远等待一个崩溃的客户端。对于匿名 rsync 服务器来说,理想的数字是 600(单位为秒)。 0 (未限制)

dont compress --用来指定那些在传输之前不进行压缩处理的文件。该选项可以定义一些不允许客户对该模块使用的命令选项列表。必须使用选项全名,而不能是简称。当发生拒绝某个选项的情况时,服务器将报告错误信息然后退出。例如,要防止使用压缩,应该是:”dont compress = *”。 *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

模块文件筛选参数

exclude --指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到 exclude 列表中。这等同于在客户端命令中使用 –exclude 来指定模式

exclude from --指定一个包含 exclude 规则定义的文件名,服务器从该文件中读取 exclude 列表定义

include --指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到 include 列表中。这等同于在客户端命令中使用 –include 来指定模式

include from --指定一个包含 include 规则定义的文件名,服务器从该文件中读取 include 列表定义

模块用户认证参数

auth users --指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块(和系统用户没有任何关系)。用户名和口令以明文方式存放在 secrets file 参数指定的文件中。默认为匿名方式

secrets file --指定一个 rsync 认证口令文件。只有在 auth users 被定义时,该文件才起作用。文件权限必须是 600

strict modes --指定是否监测口令文件的权限。为 true 则口令文件只能被 rsync 服务器运行身份的用户访问,其他任何用户不可以访问该文件。默认为true

模块访问控制参数

hosts allow --用一个主机列表指定哪些主机客户允许连接该模块。不匹配主机列表的主机将被拒绝。默认值为 *

hosts deny --用一个主机列表指定哪些主机客户不允许连接该模块

模块日志参数

transfer logging --使 rsync 服务器将传输操作记录到传输日志文件。默认值为false

log format --指定传输日志文件的字段。默认为:”%o %h [%a] %m (%u) %f %l”

设置了”log file”参数时,在日志每行的开始会添加”%t [%p]“;

可以使用的日志格式定义符如下所示:

%o --操作类型:”send” 或 “recv”

%h --远程主机名

%a --远程IP地址

%m --模块名

%u --证的用户名(匿名时是 null)

%f --文件名

%l --文件长度字符数

%p --该次 rsync 会话的 PID

%P --模块路径

%t --当前时间

%b --实际传输的字节数

%c --当发送文件时,记录该文件的校验码

另外可参考另一篇文章Linux下Rsync+sersync实现数据实时同步_yaodunlin的博客-CSDN博客

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。