网站首页 > linux / 正文
scp 是 secure copy 的缩写, 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。是linux服务器之间传输文件的利器,特别是安全防护比较严格的网络环境中。
一、应用场景
缘起:公司因为安全原因,关闭了所有常用端口,什么80、21端口都关闭了。而且服务器都必须使用堡垒机登录,但是有些内部服务器并不能使用堡垒机登录,只能通过服务器跳转,这样将一个文件从外部传输进内网就只能先传到堡垒机能访问的网络,再传到内网服务器上,于是好好研究了一下SCP这个工具。
一、常用操作
1、上传文件到远端服务器
scp -P 8833 LocalFile.rar user@192.21.0.8:/home/centuser/
其中:8833为ssh的端口,LocalFile.rar为本地文件,user为非root用户,因为user登录默认只能写自己的家目录(/home/centuser/),当然也可以另外定义一个user可写的目录。
2、从远端服务器下载文件
scp -P 8833 user@192.21.0.7:/home/centuser/RemoteFile.rar ./
其中,8833为远端服务器192.21.0.7的ssh的端口,RemoteFile.rar是远端服务器上的文件,传输到本地当前目录(./)。
3、下载远端没有权限的文件问题
scp -P 8833 user@192.21.0.8:/root/RemoteFile.rar ./
由于user用户没有访问远端服务器/root目录的权限,就会报以下错误。
scp: /root/RemoteFile.rar: Permission denied
这时候要么改变目录权限,或者使用本地向远程传输的方式。
二、进阶应用
4、从远端主机将文件复制到另一台远端主机
在本机(服务器A)操作,将文件从远端服务器B,将文件传输到远端服务器C的家目录。
使用命令:
scp user1@host1:file1 user2@host2:file
默认端口是没有问题的。
scp userA@192.21.0.3:/home/centuser/file.rar user@192.21.0.4:18933 /home/centuser/
将服务器B上的file.rar文件,传输到服务器C的家目录下。
但是测试发现,如果两台服务器都不是默认端口,传输失败,
scp -P 8833 user@192.21.0.7:/home//RemoteFile.rar -P 8833 user@192.21.0.8/home/centuser/
这种方式只有第一个端口-P有效,服务器C的端口参数-P就不会执行,同时报错。
网上还有另外一种写法,但是测试无效。
scp -P 8833 user@192.21.0.7:/home//RemoteFile.rar user@192.21.0.8:8833/home/centuser/
不知道有没有知道怎么做的,分享一下,
5、从远端主机下载rumenz目录
scp -r user@192.21.0125:/home/test/rumenz
6、限制带宽下载
scp -l 400 rumenz.tar usert@192.168.0.125:/tmp/
限制带宽为400 Kbit/s。
三、脚本操作
#!/usr/bin/expect -f
spawn scp -P 8833 youkusdk-0.0.1-SNAPSHOT2jar user@172.21.83.8:/home/centuser/
set timeout 20
expect "information"
exec sleep 2
send "password\r"
Interact
虽然expect就是用来做交互用的,基本任何交互登录的场合都能使用,但是需要安装expect包,使用yum命令自己安装。
# yum install expect
四、参数说je明
-1: 强制scp命令使用协议ssh1
-2: 强制scp命令使用协议ssh2
-4: 强制scp命令只使用IPv4寻址
-6: 强制scp命令只使用IPv6寻址
-B: 使用批处理模式(传输过程中不询问传输口令或短语)
-C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p:保留原文件的修改时间,访问时间和访问权限。
-q: 不显示传输进度条。
-r: 递归复制整个目录。
-v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
-c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit: 限定用户所能使用的带宽,以Kbit/s为单位。
-o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,
-P port:注意是大写的P, port是指定数据传输用到的端口号
-S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
Tags:linux远程复制
猜你喜欢
- 2024-11-26 Linux远程实战入侵攻击,欢迎一起交流
- 2024-11-26 scp文件传输命令详解,每日一命令
- 2024-11-26 在Linux系统中如何使用Osync脚本双向同步文件
- 2024-11-26 Linux 下用 SSH 登录远程服务器后把远程服务器文件传本地电脑
- 2024-11-26 Linux远程连接工具的使用
- 2024-11-26 Linux远程桌面连接使用教程 Widows终端远程连接Linux服务器
- 2024-11-26 Linux 远程操作:用脚本实现自动化 SSH 任务
- 2024-11-26 Linux远程rsync免密同步文件
- 2024-11-26 VSCode使用Remote-ssh搭建连接Linux的详细步骤
- 2024-11-26 Linux scp命令