ssh_scp_rsync

SSH

 

主要用以下三个功能组件

        

1.ssh远程登录  Windows下的SecureCRT、Putty

2.sftp文件共享  类(FTP)  SSH Secure File Transfer Client

3.scp 文件共享 类(cp拷贝)

 

一、准备环境

         两台电脑

         1.WebServer:   192.168.66.131        这是一台在机房的服务器

         2.MyPC:            192.168.66.132        这是我们自己的工作电脑

        

         克隆后IP获取问题,详见第一天的CentOS实验整理。

        

      二、Linux下远程登录

         格式:

                   ssh 用户名@地址

                  不允许空密码,很多Linux禁止root远程SSH登录

        

         常见选项

                   -2 表示使用SSH版本号

                   -p 指定端口

 

                  ssh -2 用户名@地址    (建议使用)

                  ssh -2 -p 端口号 用户名@地址

 

         我们在使用Putty时,也可以在Connection中选择使用什么版本

         配置文件:

         vi /etc/ssh/sshd_config

         Port 22   这是ssh的端口号,默认是注释掉的,去掉#号,就可以改了

         PermitRootLogin no         这样就能禁止root远程登录

        

         重启服务

         service sshd restart

三、sftp文件共享(了解)

         Linux下命令行:

         sftp 用户名@主机地址

                   连上去后可执行 ls  get  put help bye等

        

         很少用命令行,我们经常在Windows下用客户端软件:

                   WinSCP(同时支持SCP协议)

                   SSH Secure File Transfer Client (安装SSH.Secure.Shell.Client_3.2.9.exe)

        

四、scp 文件共享 (推荐使用)

        

         1、本机拷贝到远程主机用法:

         scp 本地文件 用户名@ip地址:远程主机上的目录

         scp -r 本地目录 用户名@远程主机ip:远程主机上的目录

 

         scp --help 查看帮助

 

         例 将inittab文件传到另一台主机的/root目录中:

         scp /etc/inittab root@192.168.88.88:/root

 

         2、从远程主机拷贝到本地:

         scp 用户名@远程主机地址:远程文件 本地目录

         scp -r 用户名@远程主机地址:远程目录 本地目录

        

         常用选项

         -p 保持原有文件属性  (建议加上)

         -r 复制目录

         -P 指定端口

 

五、ssh信任(非对称加密)

对称密钥加密               密钥yao

         加密解密使用同一密码

         速度快

         密钥本身需要交换(这就不安全了)

 

非对称密钥加密

         也称公开密钥加密,会同时生成两个密钥

         一个公开出去(公钥),一个私人持有(私钥)

         用其中一个密钥加密的数据,只有用另一个密钥才能解密

 

         公钥加密->私钥解密  (加密文件时使用)  参见“openssl命令行进行RSA加密解密.txt”

         私钥加密->公钥解密  (验证身份,数字签名) 让服务器信任后,使用SSH时,就不用验证密码了

        

         非对称密钥加密特点:

         安全性好

         速度慢

 

 

疑问:scp是需要输入密码的,如何建立信任关系?

 

        

         测试环境:

                   远程服务器ip为192.168.88.88,用户为webadmin

                   本地电脑用户为root

         目的:本机root登录后,可以直接以webadmin身份操作远程服务器,不需要验证密码

 

         原理:让对方(远程服务器)信任我的公钥

        

         1、本机生成密钥对:(例如当前登录用户为 root)

         ssh-keygen -t rsa  全部回车即可

         RSA公钥加密算法是1977年由美国麻省理工学院开发的会提示生成的公钥 id_rsa.pub 已生成 ,即是该用户默认的 RSA 身份认证公钥(SSH-2)

 

         2、将公钥拷贝至远程主机

         scp /root/.ssh/id_rsa.pub webadmin@192.168.88.88:/home/webadmin

         此时还是需要验证密码的,webadmin是远程主机192.168.88.88上的普通用户

 

         3、到远程主机做信任操作

         ssh -2 webadmin@192.168.88.88

         cd ~   来到用户宿主目录

         ls -a  如果没有.ssh目录,则创建

         mkdir .ssh

         cat id_rsa.pub >> .ssh/authorized_keys #加入到认证信息,用的是追加,可以保存多个信任用户

         chmod 700 .ssh                                             # 新版本的ssh要求这个目录的权限必须是700

         chmod 600 .ssh/authorized_keys             # 新版本的ssh要求这个文件的权限必须是600

 

         4、回到MyPC本机测试

         ssh webadmin@192.168.88.88    不需要密码,直接登录成功

         那么通过scp拷贝文件,也不需要密码了

        

         注意:

         在本机中由于是root用户生成公钥,所以只要在本机上,只有使用root用户以webadmin身份操作远程主机才是信任的。

                  如果本机不是root用户,或不指定以webadmin用户操作远程主机,依然需要密码。

         例 ssh root@192.168.88.88 ,尝试以root身份登录远程主机,还是要输入密码

 

六、rsync数据镜像备份工具

 

         WebServer和MyPC上都要安装rsync,其中WebServer服务器上是以服务器模式运行rsync,

         MyPC上则以客户端方式运行rsync。这样在web服务器上运行rsync守护进程,

         在MyPC上定时运行客户程序来备份WebServer服务器上需要备份的内容到MyPC。

 

         方便的增量备份实现

         可镜像保存整个目录树和文件系统

         保存文件权限、时间、软硬链接等

         文件传输效率高(可压缩传输)

         可以使用ssh加密通道

        

1、准备环境

         WebServer:

 

         服务是xinetd进程托管方式

         默认都已安装,检查是否已安装

                   rpm -q rsync

 

         启动服务 默认不启用

         ls /etc/xinetd.d

         vi /etc/xinetd.d/rsync

                  修改disable = no  保存退出编辑器

         service xinetd restart      重启xinetd托管服务

                   若提示xinetd: 未被识别的服务,则说明/etc/rc.d/init.d下无xinetd包

                   yum -y install xinetd*                #安装xinetd

                   ps -le |grep xinetd                    #查看是否启动成功

 

         MyPC:

 

         在MyPC中,想要同步服务器上的一个目录到本机测试一下

         rsync -arHz --progress --delete webadmin@192.168.88.88:/website /backup

         注意:webadmin是服务器上的用户,请确定webadmin有访问服务器/website目录的权限

         本机MyPC登录用户,要有操作/backup的权限

 

         如果重复执行,只会操作有改变的文件,如新加的文件或删除的文件,备份目录同步操作

        

         参数说明

         -a               保持文件属性

         -r                子目录递归处理

         -H              保持文件硬链接  如果要备份的文件中没有硬链接,也可以不加-H

         -z               备份文件传输时压缩处理

         -e ssh                 使用ssh加密隧道传输

         --progress         在传输时显示传输过程  可以不加

         --delete    删除目标备份没有的文件

        

         如果需要将MyPC中的目录上传到WebServer,本地目录写在前面即可

 

七、备份实例

定期将服务器上的/website目录备份到本机

         每周日02:00   完全备份,以日期作为目录

         周一到周六02:00  做一次增量备份

为什么即要做增量备份,还要做完全备份?

这里的增量备份,指的是目录同步,跳过相同的文件,如果有文件被删除,则也会删除备份目录中的,所以,需要定期做完全备份

 

         crontab -e

         0  2  *  *  0     /usr/bin/scp -rp webadmin@192.168.88.88:/website /backup/website_$(date +%Y%m%d)

         0  2  *  *  1-6   /usr/bin/rsync -arHz --delete -e ssh webadmin@192.168.88.88:/website /backup/web

        

         取当前日期

                   echo $(date +%F)   可查看date --help

                   echo $(date +%Y%m%d)

                   给变量赋值:

                   # a=5; echo $a;

                   # a=(`date +%F`)

                   # echo $a 

posted @ 2015-07-01 11:25  bodhicitta  阅读(144)  评论(0)    收藏  举报