scp简称是security copy,通过ssh来上传和下载文件(目录)

下载

#下载文件或者目录
scp -P ssh端口 -r 远程服务用户名@服务器ip:远程文件或目录 本地文件或目录 
#接着输入密码即可

#如果远程服务器ssh端口是默认的22,可以不指定端口,命令简化为
scp -r 远程服务用户名@服务器ip:远程文件或目录 本地文件或目录

上传

#上传文件或者目录
scp -P ssh端口 -r 本地文件或目录 远程服务用户名@服务器ip:远程文件或目录 
#接着输入密码即可

#如果远程服务器ssh端口是默认的22,可以不指定端口,命令简化为
scp -r 本地文件或目录 远程服务用户名@服务器ip:远程文件或目录 

由此可见scp的上传和下载,只是把远程和本地换下位置而已。

如果目标服务器无法通过ssh直接连接,需要通过跳板机才能连接呢?如何使用scp

image-20210104103753315

实际工作中连接生产服务器下载文件,由于本地和生产网络隔离,无法直接通过scp直接到目标服务器上传或下载文件,那么是否可以通过跳板机呢?办法是有的

例子如下:

跳板机host1:192.168.1.100 admin/admin

目标服务器host2:192.168.1.110 user/user

比如使用ssh命令,通过跳板机登录目标服务器命令如下:

#自己本地主机执行
ssh -J admin@192.168.1.100 user@192.168.1.110
#回车后先输入跳板机密码,再输入目标机器密码

这样就可以通过ssh连接到目标主机了,发现只是通过参数-J来指定了跳板机,如果需要多次跳转呢?那么命令格式就是

ssh -J 跳板机1 跳板机2 跳板机3 目标服务器

那么scp通过跳板机命令如下:

#下载
scp -P 22 -o \'ProxyJump 跳板机\' -r 目标服务器:目标文件或目录 本地文件或目录
scp -P 22 -o \'ProxyJump admin@192.168.1.100 -p 22\' -r user@192.168.1.110:/user/bin/12533.dump ./12533.dump
#简化
scp -o \'ProxyJump admin@192.168.1.100\' -r user@192.168.1.110:/user/bin/12533.dump ./12533.dump
####################################################################################################
#上传
scp -P 22 -o \'ProxyJump 跳板机\' -r 本地文件或目录 目标服务器:目标文件或目录 
scp -P 22 -o \'ProxyJump admin@192.168.1.100 -p 22\' -r ./12533.dump user@192.168.1.110:/user/bin/12533.dump 
#简化
scp -o \'ProxyJump admin@192.168.1.100\' -r ./12533.dump user@192.168.1.110:/user/bin/12533.dump 

发现scp通过跳板机和目标服务器传输文件,只是增加了个参数-o,用于指定代理, 其它和scp完全相同。如果有多个跳板机,那么就在ProxyJump增加多个跳板机。

版权声明:本文为zhangyjblogs原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zhangyjblogs/p/15236883.html