本文共 3642 字,大约阅读时间需要 12 分钟。
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查询方法)
[ ~]# rpm -qa |grep openssh-clients
openssh-clients-5.3p1-111.el6.x86_64
[ ~]#
[ ~]# rpm -qa openssh-clients
openssh-clients-5.3p1-111.el6.x86_64
[ ~]#
2.scp传送数据(这是推送的方式从一台服务器推送到另一台服务器)
本机Ip192.168.33.10 所要吧数据推送的主机的ip192.168.33.11
192.168.33.10 服务器上的命令
[ ~]# scp install.log :/tmp
's password:
install.log 100% 22KB 21.7KB/s 00:00
[ ~]#
192.168.33.11 服务器上进行查看(ok)
[ ~]# cd /tmp
[ tmp]# ls
install.log
[ tmp]#
3.scp传送数据(拉取的方式,从一台服务器吧数据拉回本地)
192.168.33.11 把数据从192.168.33.10 拉回来
192.168.33.11上的操作(中间的时候恢复一个yes和要输入用户的密码):
[ tmp]# scp :/root/install.log.syslog /tmp
查看拉取成功
[ tmp]# ls
install.log.syslog
[ tmp]#
4.推送目录(吧192.168.33.10 上的/etc 目录推送到 192.168.33.11 /tmp 目录下)
192.168.33.10 下的代码
[ ~]# scp -r /etc/ :/tmp/
192.168.33.11 中进行查看(可以看出etc目录已经被复制)
[ ~]# cd /tmp
[ tmp]# ls
etc install.log.syslog
[ tmp]#
5.限制文件的传输大小
①生成一个500M的文件
[ ~]# dd if=/dev/zero of=./bigfile bs=500M count=1
[ ~]# du -h bigfile
500M bigfile
[ ~]#
②传输也就是推送
192.168.33.10 服务器(可以看出800是代表的比特所以每秒大约有102.4KB/s)
[ ~]# scp -l 800 bigfile :/tmp
's password:
bigfile 1% 7568KB 99.0KB/s 1:24:56 ETA^
6.修改端口进行指定端口推送
①修改192.168.33.11 的sshd的端口默认是22修改成22191 编辑文件中
Port 22191
[ ~]# vim /etc/ssh/sshd_config
把# Port 22 修改成Port 22191 (默认有注释,修改后要把注释去掉保存,然后重启服务)
[ ~]# /etc/init.d/sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
[ ~]#
查看确认
[ ~]# 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
[ ~]#
②在192.168.33.10 进行传送数据(传输完成)
[ ~]# scp -P 22191 bigfile :/tmp
's password:
bigfile 100% 500MB 8.8MB/s 00:57
[ ~]#
吧端口修改回来不然咱们用crt登录的时候就得用22191端口了。修改回来
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
scp无密码的传输
①在192.168.33.10 上生成秘钥(执行命令按回车)
[ ~]# ssh-keygen -t rsa
[ ~]#
②查看秘钥
[ ~]# cd /root/.ssh/
[ .ssh]# ls
id_rsa id_rsa.pub known_hosts
[ .ssh]#
③对秘钥id_rsa.pub进行改名,赋予新的权限
[ .ssh]# mv id_rsa.pub auth_key
[ .ssh]# chmod 600 auth_key
[ .ssh]#
[ .ssh]# ls
auth_key id_rsa known_hosts
[ .ssh]#
注: auth_key是公钥 id_rsa 是私钥
④把私钥拷贝到另一台服务器上(192.168.33.11)
192.168.33.10 操作
[ .ssh]# scp id_rsa :/root/.ssh/
's password:
id_rsa 100% 1675 1.6KB/s 00:00
[ .ssh]#
到192.168.33.11上查看(ok)
[ ~]# cd .ssh
[ .ssh]# ls
id_rsa known_hosts
[ .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_keyschmod 700 /root/.ssh继续在 B 服务器上操作:运行:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keyschmod 600 /root/.ssh/authorized_keys设置好后重启下sshCentOS 重启SSH : service sshd restartDebian重启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
命令
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&