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
实际工作中连接生产服务器下载文件,由于本地和生产网络隔离,无法直接通过 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 增加多个跳板机。
https://www.cnblogs.com/zhangyjblogs/p/15236883.html