scp原理:特点先统计信息,看对方有没有足够的空间存储,如果太多的话,效率非常的低
rsync :边复制 边比较 边统计
800kb=100KB
8比特=1字节
1024KB=1M
scp传送的是比特
-l 代表的是limit (限制的意思) Limits the used bandwidth, specified in Kbit/s.
-P (这里是大写的P) 指定sshd的传输的端口(默认的sshd的端口是22端口)
1.两台服务器之间的进行scp备份的时候要确保都安装了openssh-clients软件(rpm查询方法)
[root@oldboy ~]# rpm -qa |grep openssh-clients
openssh-clients-5.3p1-111.el6.x86_64
[root@oldboy ~]#
[root@oldboy ~]# rpm -qa openssh-clients
openssh-clients-5.3p1-111.el6.x86_64
[root@oldboy ~]#
2.scp传送数据(这是推送的方式从一台服务器推送到另一台服务器)
本机Ip192.168.33.10 所要吧数据推送的主机的ip192.168.33.11
192.168.33.10 服务器上的命令
[root@oldboy ~]# scp install.log [email protected]:/tmp
[email protected]'s password:
install.log 100% 22KB 21.7KB/s 00:00
[root@oldboy ~]#
192.168.33.11 服务器上进行查看(ok)
[root@oldboy ~]# cd /tmp
[root@oldboy tmp]# ls
install.log
[root@oldboy tmp]#
3.scp传送数据(拉取的方式,从一台服务器吧数据拉回本地)
192.168.33.11 把数据从192.168.33.10 拉回来
192.168.33.11上的操作(中间的时候恢复一个yes和要输入用户的密码):
[root@oldboy tmp]# scp [email protected]:/root/install.log.syslog /tmp
查看拉取成功
[root@oldboy tmp]# ls
install.log.syslog
[root@oldboy tmp]#
4.推送目录(吧192.168.33.10 上的/etc 目录推送到 192.168.33.11 /tmp 目录下)
192.168.33.10 下的代码
[root@oldboy ~]# scp -r /etc/ [email protected]:/tmp/
192.168.33.11 中进行查看(可以看出etc目录已经被复制)
[root@oldboy ~]# cd /tmp
[root@oldboy tmp]# ls
etc install.log.syslog
[root@oldboy tmp]#
5.限制文件的传输大小
①生成一个500M的文件
[root@oldboy ~]# dd if=/dev/zero of=./bigfile bs=500M count=1
[root@oldboy ~]# du -h bigfile
500M bigfile
[root@oldboy ~]#
②传输也就是推送
192.168.33.10 服务器(可以看出800是代表的比特所以每秒大约有102.4KB/s)
[root@oldboy ~]# scp -l 800 bigfile [email protected]:/tmp
[email protected]'s password:
bigfile 1% 7568KB 99.0KB/s 1:24:56 ETA^
6.修改端口进行指定端口推送
①修改192.168.33.11 的sshd的端口默认是22修改成22191 编辑文件中
Port 22191
[root@oldboy ~]# vim /etc/ssh/sshd_config
把# Port 22 修改成Port 22191 (默认有注释,修改后要把注释去掉保存,然后重启服务)
[root@oldboy ~]# /etc/init.d/sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
[root@oldboy ~]#
查看确认
[root@oldboy ~]# netstat -lntup |grep 22
tcp 0 0 0.0.0.0:22191 0.0.0.0:* LISTEN 4236/sshd
tcp 0 0 :::22191 :::* LISTEN 4236/sshd
[root@oldboy ~]#
②在192.168.33.10 进行传送数据(传输完成)
[root@oldboy ~]# scp -P 22191 bigfile [email protected]:/tmp
[email protected]'s password:
bigfile 100% 500MB 8.8MB/s 00:57
[root@oldboy ~]#
吧端口修改回来不然咱们用crt登录的时候就得用22191端口了。修改回来
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
scp无密码的传输
①在192.168.33.10 上生成秘钥(执行命令按回车)
[root@oldboy ~]# ssh-keygen -t rsa
[root@oldboy ~]#
②查看秘钥
[root@oldboy ~]# cd /root/.ssh/
[root@oldboy .ssh]# ls
id_rsa id_rsa.pub known_hosts
[root@oldboy .ssh]#
③对秘钥id_rsa.pub进行改名,赋予新的权限
[root@oldboy .ssh]# mv id_rsa.pub auth_key
[root@oldboy .ssh]# chmod 600 auth_key
[root@oldboy .ssh]#
[root@oldboy .ssh]# ls
auth_key id_rsa known_hosts
[root@oldboy .ssh]#
注: auth_key是公钥 id_rsa 是私钥
④把私钥拷贝到另一台服务器上(192.168.33.11)
192.168.33.10 操作
[root@oldboy .ssh]# scp id_rsa [email protected]:/root/.ssh/
[email protected]'s password:
id_rsa 100% 1675 1.6KB/s 00:00
[root@oldboy .ssh]#
到192.168.33.11上查看(ok)
[root@oldboy ~]# cd .ssh
[root@oldboy .ssh]# ls
id_rsa known_hosts
[root@oldboy .ssh]#
⑤可以进行无密码传输了
私钥的可以传输公钥的不需要密码,但是公钥的服务器传输到私钥上确实需要密码,在本机生成的秘钥和私钥只要有一个有就行,如果两台机器都可以互相无密码传输的话,那么每台机器都生成一个密码要私钥
拥有私钥的机器可以访问拥有公钥的机器
产生公私钥
假设有两台linux服务器A和B,当A连接B时不需要输入密码,实现方法是在A vps上使用ssh-keygen命令生成一对公私钥,具体操作如下:
在 A 服务器操作:
运行:ssh-keygen -t rsa 三次回车 生成公钥id_rsa.pub和私匙id_rsa,默认存放在/root/.ssh/目录下 在 B 服务器上操作: 把A公钥id_rsa.pub 复制上传到 B 服务器/root/.ssh/目录下 ps:没有.ssh目录可放在其它目录或创建一个:mkdir .ssh 再创建一个:touch /root/.ssh/authorized_keys chmod 700 /root/.ssh 继续在 B 服务器上操作: 运行: cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 /root/.ssh/authorized_keys 设置好后重启下ssh CentOS 重启SSH : service sshd restart Debian重启SSH:service ssh restart 在A服务器上centos执行: ssh root@B服务器的IP -P端口 debian执行:ssh -l root B服务器的IP -p 22 看看是否可以不同密码直接密匙登陆了。退出命令:exit
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
scp实战技巧
在crontab中写定时任务 传送备份数据
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
linux 本地文件上传到服务器
scp /home/liujia/file.1txt [email protected]:/user/liujia
从服务器下载文件
scp [email protected]:/user/liujia/file1.txt /home/liujia
命令
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&