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

    下载

    1. #下载文件或者目录
    2. scp -P ssh端口 -r 远程服务用户名@服务器ip:远程文件或目录 本地文件或目录
    3. #接着输入密码即可
    4. #如果远程服务器ssh端口是默认的22,可以不指定端口,命令简化为
    5. scp -r 远程服务用户名@服务器ip:远程文件或目录 本地文件或目录

    上传

    1. #上传文件或者目录
    2. scp -P ssh端口 -r 本地文件或目录 远程服务用户名@服务器ip:远程文件或目录
    3. #接着输入密码即可
    4. #如果远程服务器ssh端口是默认的22,可以不指定端口,命令简化为
    5. scp -r 本地文件或目录 远程服务用户名@服务器ip:远程文件或目录

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

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

    scp通过跳板机传输文件 - 图1

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

    例子如下:

    跳板机 host1:192.168.1.100 admin/admin

    目标服务器 host2:192.168.1.110 user/user

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

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

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

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

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

    1. #下载
    2. scp -P 22 -o 'ProxyJump 跳板机' -r 目标服务器:目标文件或目录 本地文件或目录
    3. scp -P 22 -o 'ProxyJump admin@192.168.1.100 -p 22' -r user@192.168.1.110:/user/bin/12533.dump ./12533.dump
    4. #简化
    5. scp -o 'ProxyJump admin@192.168.1.100' -r user@192.168.1.110:/user/bin/12533.dump ./12533.dump
    6. #
    7. #上传
    8. scp -P 22 -o 'ProxyJump 跳板机' -r 本地文件或目录 目标服务器:目标文件或目录
    9. scp -P 22 -o 'ProxyJump admin@192.168.1.100 -p 22' -r ./12533.dump user@192.168.1.110:/user/bin/12533.dump
    10. #简化
    11. 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