linux – 通过多个跃点的SSH隧道复制数据

前端之家收集整理的这篇文章主要介绍了linux – 通过多个跃点的SSH隧道复制数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们有两个主要的环境:

发展和质量保证

每个环境都有两个服务器:

>跳箱
>应用服务器

要连接到应用程序服务器,必须首先连接到跳转框,然后连接到应用程序服务器.

由防火墙提供的一些规则:

>您必须通过跳转框连接到应用程序服务器
>应用程序服务器无法连接到任何跳转
>跳转框位于同一子网上,并且CAN可以相互通信.

我们的问题

我们在开发应用服务器上有很多内容(670 GB),我们需要将其提供给QA APPLICATION SERVER.

将此数据复制到跳转框不是一种选择,因为它们缺少所需的空间量.

我做了一些研究,并了解到我们可能会通过这些服务器执行一系列隧道,以便我们可以通过隧道将数据直接从一个应用服务器流式传输到另一个应用服务器.但是,我们无法从应用程序服务器连接到跳转框的问题.

我们有什么选择吗?这将成为一个绝望的情况,时间是至关重要的.我们没有时间下载数据并重新上传.在服务器上通过网络进行复制将很快进行,因为它是一个千兆位连接.

解决方法

到目前为止,最简单的方法是通过scp复制它.另外,这种语法实际上与其他一些建议不同.

你不能轻易打败这种语法.它允许您递归复制,rsync或您想要的任何内容,而无需考虑可能复杂的管道.这种语法直观清晰,更容易被Sys管理员支持,他们关注你并且不会制作useless use of cat.

scp -3 devappserver:/path/to/copy/from qaappserver:/path/to/copy/to

the scp man page:-3两个远程主机之间的副本通过本地主机传输.如果没有此选项,数据将直接在两个远程主机之间复制.请注意,此选项会禁用进度表.

在下面的例子中

>您的工作站名为MacBook-Pro.
> Dev Jump Box被命名为devjumpserver
> Dev Application Server名为devapplicationserver

>在LAN DNS区域名为.local

> QA Jump Box被命名为qajumpserver
> QA Application Server名为qaapplicationserver

>在LAN DNZ区域名为.local

>我们将执行670GB / etc / hosts文件的测试副本;-)
>假设您已配置SSH公钥验证.

这是一个〜/ .ssh / config文件,它通过适当的跳转(也称为堡垒服务器)设置从工作站到应用程序服务器的直接访问.

MacBook-Pro:~ barrychapman$cat ~/.ssh/config
Host *
  ServerAliveInterval 60
Host devapplicationsever
  HostName devapplicationserver.local
  ProxyCommand ssh -i ~/.ssh/id_rsa barrychapman@devjumpserver.example.com -W %h:%p
  User barrychapman
Host qaapplicationserver
  HostName qaapplicationserver.local
  ProxyCommand ssh -i ~/.ssh/id_rsa barrychapman@qajumpserver.example.com -W %h:%p
  User barrychapman

MacBook-Pro:~ barrychapman$

测试目标服务器上是否存在文件,它不会存在.

MacBook-Pro:~ barrychapman$ssh qaapplicationserver ls /tmp/hosts
ls: cannot access /tmp/hosts: No such file or directory
Killed by signal 1.
MacBook-Pro:~ barrychapman$

现在让我们通过您的工作站将文件从开发应用程序服务器复制到QA应用程序.


MacBook-Pro:~ barrychapman$scp -3 devapplicationserver:/etc/hosts qaapplicationserver:/tmp/
Killed by signal 1.
Killed by signal 1.
MacBook-Pro:~ barrychapman$

现在让我们检查QA Application Server上是否存在复制的文件.这次会在那里.

MacBook-Pro:~ barrychapman$ssh qaapplicationserver ls /tmp/hosts
/tmp/hosts
Killed by signal 1.
MacBook-Pro:~ barrychapman$

注意

关闭ProxyCommand连接时,您将看到警告消息“被信号1杀死”.这是SSH拆除ProxyCommand连接,没有什么可惊慌的.您可以通过将LogLevel Quiet添加到堡垒主机配置节来摆脱它.

猜你在找的Linux相关文章