linux-command-01 scp
概念解析
安全复制协议
安全复制(英语:Secure copy,缩写SCP)是指在本地主机与远程主机或者两台远程主机之间基于Secure Shell(SSH)协议安全地传输计算机文件。“SCP”通常指安全复制协议或者程序本身。SCP是一种基于BSDRCP协议的网络传输协议,支持同一个网络上主机之间传输文件。SCP使用Secure Shell(SSH)完成数据传输,并使用同时用它进行身份认证,从而确保数据传输时的真实性和保密性。客户端可以向服务器发送(上传)文件,可选包含其基本属性(权限、时间戳)。客户端也可以请求(下载)一个服务器的文件或目录。SCP默认通过TCP端口22运行。
Linux scp命令
Linux scp命令用于Linux之间复制文件和目录。scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。
语法
完整写法
1 | scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] |
简易写法
1 | scp [可选参数] file_source file_target |
可选参数
1 | -1: 强制scp命令使用协议ssh1 |
实验准备
准备两台干净的虚拟机
node3:192.168.141.12
node4:192.168.141.132
准备测试文件和测试目录
node3
1 | [root@node3 ~]# echo "hello,i come from node3" > node3.txt |
node4
1 | [root@node4 ~]# echo "hello,i come from node4" > node4.txt |
实例解析
1.在node3上将node3.txt发送到node4的/root/directory4目录下
这里指定了用户名,命令执行后就不需要输入用户名
1 | [root@node3 directory3]# scp /root/node3.txt root@192.168.141.132:/root/directory4 |
我们到node4上验证一下,然后删掉node3.txt,继续做下一步实验。
1 | [root@node4 directory4]# ls |
2.在node3上将node4.txt拷贝node3的/root/directory3目录下
1 | [root@node3 directory3]# scp root@192.168.141.132:/root/node4.txt /root/directory3 |
说明
1.如果远程服务器防火墙有为scp命令设置了指定的端口,我们需要使用 -P 参数来设置命令的端口号。
先在node4上放行4555端口,关闭selinux,将ssh端口改为4555 。
1 | [root@node4 directory4]# firewall-cmd --add-port=4555/tcp --permanent |
然后尝试用4555端口,在node3上将node3.txt发送到node4的/root/directory4目录下
1 | [root@node3 directory3]# scp -P 4555 /root/node3.txt root@192.168.141.132:/root/directory4 |
最后验证一下
1 | [root@node4 ssh]# cd /root/directory4/ |
实验做完了别忘了将sshd端口改回来且重启。
1 | [root@node4 directory4]# sed -n '17p' /etc/ssh/sshd_config |
2.使用scp命令要确保使用的用户具有可读取远程服务器相应文件的权限,否则scp命令是无法起作用的。
上面我们用的都是root用户,所以不用担心权限不够。但是我们在管理真实的服务器时,出于安全考虑,一般会禁止root远程登录服务器 。所以我们在服务器给自己创建的用户必须做好相应权限分配,避免scp时权限不够导致出错。如果因为权限不够而传送不了文件,那么sudo root借用root权限后,给自己分配相应权限,然后回头再用scp传文件就不会传不了了。
本篇到此结束