您的位置:首页 > 其它

ssh,expect脚本实现远程登录,拷贝命令scp,rsync服务器的搭建

2017-02-03 20:25 751 查看
两台主从机之间的自动登录

在主机一中使用ssh-keygen产生公钥id.rsa.pub和私钥id.rsa

然后把公钥内容复制到主机2的.ssh/id.rsa.pub中(若没有就创建该目录)

注意,主机2中的防火墙要关闭,getenforce获得防火墙状态 (enforce  permissive disabled)

                                                                setenforce 0 (临时关闭防火墙)

要想永远关闭需要到配置文件中/etc/selinux/config 中设置重启后才会生效

修改文件夹/root/.ssh的权限:

(本地机和远程机都要修改)

chmod 700 /root/.ssh

修改文件的属性:

chmod 600 /root/.ssh/authorized_keys

将公钥复制到ip地址为192.168.163.101的远程机上:

ssh-copy-id  -i  /root/.ssh/id_rsa.pub root@192.168.2.150 (这条命令比scp有效多了,可以在远程主机上没有authorized_keys的情况下,直接运行,然后自动会在远程主机上创建/root/.ssh/authorized_keys)

注意主从登陆关系

ssh-keygen是用于在主机上产生秘钥的,然后把其中的公钥通过ssh-copy-id 传给远程从机

这样只能实现,在主机上远程登录从机,不能从机登陆主机。

远程登录形式:ssh root@192.168.1.1

远程执行命令:ssh root@192.168.1.1 "ls"

远程执行多条命令  ssh root@192.168.1.1 "ls ;id;w"

scp (-r 拷贝目录) 目标ip:目录地址

例如 

scp  dai  192.168.1.1:/root/

scp -r dai/ 192.168.1.1:/root/

rsync实现增量备份(拷新不拷旧,大大节省了拷贝时间),就算改了文件的属性,也算改动了,也算新文件

rsync 可以实现 本地-远程

   远程-本地

    本地-本地

例如

rsync -av   /dir   192.168.1.1:/root/

rsync -av     192.168.1.1:/dir     /dir

rsync -av       /dir    /dir2

三种类型的同步

-a == -rlptgoD以递归的方式进行归档,保持文件的属性

-r针对目录的拷贝

-v打印一些信息

-l 保留软链接(但是如果目标机器没有链接文件也是无效的)

-L把软链接的原文件拷贝到对方,名字是源软链接的名字(常用在跨服务器上,或者是远程备份)

-p保持文件的权限

-o  保持所属主

-g保持所属组

-D表示设备文件信息

-t保持时间信息

--delete同步的时候会删除目标文件中源没有的内容

--exclude=*.txt可以跟一些正则表达式,过滤不想拷贝的内容

--progress== -P统计同步速度或者数量

-u(相当于update)避免覆盖目标文件中新的文件。

 rsync服务器的搭建:

首先要建立一个/etc/rsyncd.conf的配置文件

配置文件中的内容

port=873  #服务开启的端口

log file=/var/log/rsync.log#日志文件

pid file=/var/log/rsync.pid# pid日志文件

address=192.168.2.133#服务器端的ip

[test]                        # rsync的用户,只能由指定的用户去同步文件,可以多个用户同时存在

path=/tmp/1234/      #  服务器端下存放的文件内容(只能针对这个目录下的文件进行操作)

use chroot=true        # 限定path路径,如果是true就只能在 path指定的目录下,如果想拷贝外面的软链接,就需要设

   置成false

read only=no             #这里表示可以对文件进行写操作

uid=root                     #以哪个用户身份去进行传输

gid=root                      #同上

auth users=test           #限定用户只能是test,也可以不指定,看具体应用

secrets file=/etc/rsync.passwd  # 设置test用户的密码,注意要设置成600权限。该文件内容形式(用户:密码)
例如 test:1234567

hosts allow=192.168.2.0/24    #允许该网段的ip进行rsync服务的访问,也可以是多个网段或者ip

                                                     如:hosts allow=192.168.2.168  192.168.2.113

#max connections #最大连接数,默认是0,既没有限制。可忽略

#list 查询该服务器上所用模块时,是否被列出,true为列出,false不被列出。可忽略

用法例如:rsync -av  /root/123   192.168.2.133::test/   #(这里的test相当于上面的/tmp/1234/目录。注意这里是"::")

然后启动服务  rsync   --daemon --config=/etc/rsyncd.passwd

如果想开机启动,可把上面一条命令加入/etc/rc.d/rc.local中

另外一种免密码登陆方式expect

yum install expext

#!/usr/bin/expect

set user "root"  #设置用户名变量

set passwd "1234567" #设置用户密码

spawn  ssh $user@192.168.2.1 #执行的命令

expect "yes/no" #匹配到yes/no 

send "yes\r" #发送yes

expect "password:" #匹配到password

send "$passwd\r" #然后发送密码

expect eof  #结束

如下是expect 里面的形参设置

set b [lindex $argv 0] ;;第一个参数

set a [lindex $argv 1] ;; 第二个参数

set . ..................第N个参数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐