scp.pptxwKioL1cWE1eDtxiNAAD77lBta4A522.png

scp原理:特点先统计信息,看对方有没有足够的空间存储,如果太多的话,效率非常的低

rsync :边复制  边比较  边统计

800kb=100KB

8比特=1字节

1024KB=1M

scp传送的是比特

-l 代表的是limit (限制的意思)             Limits the used bandwidth, specified in Kbit/s.

-P (这里是大写的P)  指定sshd的传输的端口(默认的sshd的端口是22端口)

spacer.gif


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 root@192.168.33.11:/tmp

root@192.168.33.11'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 root@192.168.33.10:/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/ root@192.168.33.11:/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 root@192.168.33.11:/tmp

root@192.168.33.11'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 root@192.168.33.11:/tmp

root@192.168.33.11'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 root@192.168.33.11:/root/.ssh/

root@192.168.33.11'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  liujia@172.16.252.32:/user/liujia

从服务器下载文件

scp liujia@172.16.252.32:/user/liujia/file1.txt /home/liujia

命令

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&