SSH
主要用以下三个功能组件
1.ssh远程登录 Windows下的SecureCRT、Putty
2.sftp文件共享 类(FTP) SSH Secure FileTransfer 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
Port22 这是ssh的端口号,默认是注释掉的,去掉#号,就可以改了
PermitRootLoginno 这样就能禁止root远程登录
重启服务
servicesshd restart
三、sftp文件共享(了解)
Linux下命令行:
sftp用户名@主机地址
连上去后可执行 ls get put help bye等
很少用命令行,我们经常在Windows下用客户端软件:
WinSCP(同时支持SCP协议)
SSH Secure File TransferClient (安装SSH.Secure.Shell.Client_3.2.9.exe)
四、scp 文件共享(推荐使用)
1、本机拷贝到远程主机用法:
scp 本地文件用户名@ip地址:远程主机上的目录
scp -r 本地目录用户名@远程主机ip:远程主机上的目录
scp --help查看帮助
例将inittab文件传到另一台主机的/root目录中:
scp /etc/[email protected]:/root
2、从远程主机拷贝到本地:
scp 用户名@远程主机地址:远程文件本地目录
scp -r 用户名@远程主机地址:远程目录本地目录
常用选项
-p 保持原有文件属性 (建议加上)
-r 复制目录
-P 指定端口
五、ssh信任(非对称加密)
对称密钥加密 密钥yue
加密解密使用同一密码
速度快
密钥本身需要交换(这就不安全了)
非对称密钥加密
也称公开密钥加密,会同时生成两个密钥
一个公开出去(公钥),一个私人持有(私钥)
用其中一个密钥加密的数据,只有用另一个密钥才能解密
公钥加密->私钥解密 (加密文件时使用) 参见“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 [email protected]:/home/webadmin
此时还是需要验证密码的,webadmin是远程主机192.168.88.88上的普通用户
3、到远程主机做信任操作
ssh-2 [email protected]
cd~ 来到用户宿主目录
ls-a 如果没有.ssh目录,则创建
mkdir.ssh
catid_rsa.pub >> .ssh/authorized_keys#加入到认证信息,用的是追加,可以保存多个信任用户
chmod700 .ssh # 新版本的ssh要求这个目录的权限必须是700
chmod600 .ssh/authorized_keys # 新版本的ssh要求这个文件的权限必须是600
4、回到MyPC本机测试
[email protected] 不需要密码,直接登录成功
那么通过scp拷贝文件,也不需要密码了
注意:
在本机中由于是root用户生成公钥,所以只要在本机上,只有使用root用户以webadmin身份操作远程主机才是信任的。
如果本机不是root用户,或不指定以webadmin用户操作远程主机,依然需要密码。
例 ssh [email protected] ,尝试以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 -yinstall xinetd* #安装xinetd
ps -le |grepxinetd #查看是否启动成功
MyPC:
在MyPC中,想要同步服务器上的一个目录到本机测试一下
rsync -arHz --progress--delete [email protected]:/website /backup
注意:webadmin是服务器上的用户,请确定webadmin有访问服务器/website目录的权限
本机MyPC登录用户,要有操作/backup的权限
如果重复执行,只会操作有改变的文件,如新加的文件或删除的文件,备份目录同步操作
参数说明
-a 保持文件属性
-r 子目录递归处理
-H 保持文件硬链接 如果要备份的文件中没有硬链接,也可以不加-H
-z 备份文件传输时压缩处理
-essh 使用ssh加密隧道传输
--progress 在传输时显示传输过程 可以不加
--delete 删除目标备份没有的文件
如果需要将MyPC中的目录上传到WebServer,本地目录写在前面即可
七、备份实例
定期将服务器上的/website目录备份到本机
每周日02:00 完全备份,以日期作为目录
周一到周六02:00 做一次增量备份
为什么即要做增量备份,还要做完全备份?
这里的增量备份,指的是目录同步,跳过相同的文件,如果有文件被删除,则也会删除备份目录中的,所以,需要定期做完全备份
crontab-e
0 2 * * 0 /usr/bin/scp -rp [email protected]:/website /backup/website_$(date+%Y%m%d)
0 2 * * 1-6 /usr/bin/rsync -arHz --delete -e ssh [email protected]:/website/backup/web
取当前日期
echo$(date +%F) 可查看date --help
echo$(date +%Y%m%d)
给变量赋值:
#a=5; echo $a;
#a=(`date +%F`)
#echo $a