ssh 和 scp 跳板机 之间连接 和 传送文件

背景:常联的服务器,连不上了,运维告知原因: 可能国外服务器通信波动或者出口被限制了。但是通过另一个服务器可以内网连接目标服务器,结果就是要先连跳板机再连目标服务器,连接不方便,传送文件也很麻烦。
想要的效果:连接和传送文件都一次命令就OK了,和以前连一次服务器一样,省时省力。

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直接到目标服务器上传或下载文件,那么是否可以通过跳板机呢?

image.png

办法是有的

例子如下:

跳板机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增加多个跳板机。

文章参考

posted @ 2022-09-21 16:27  wzqwer  阅读(3168)  评论(0编辑  收藏  举报