跳转主机,也称为跳转服务器,英文名Jump Host,它是远程网络的中间主机或SSH网关,通过它可以连接到不同安全区域(例如非军事化区(DMZ))中的另一台主机。它桥接两个不同的安全区域并提供它们之间的受控访问。
跳转主机应该受到高度保护和监控,尤其是当它跨越专用网络和DMZ时,服务器会在互联网上为用户提供服务。
一个典型的案例是,你从公司内部网络的台式机或笔记本电脑连接,该内部网络通过防火墙高度安全地连接到DMZ。为了方便地管理DMZ中的服务器,则可以通过跳转主机访问它。
简而言之,跳转主机就是一个Linux服务器,可通过SSH协议连接到私有网络上其它Linux 服务器的网关。在本文中,小编简单介绍如何通过跳转主机访问远程Linux服务器,此外还将在每个用户的SSH客户端配置中配置必要的设置。
其实,SSH跳转服务器设置的原理很简单,就是通过中间服务器来访问目标服务器。可以考虑以下一个简单的场景:
为了更清楚帮助大家了解,下面是一个简单的设置,演示了SSH跳转服务器的作用,可以说是一目了然:
配置SSH跳转主机的原因
配置跳转服务器可以为你的基础设施提供了一个网关,并减少了对服务器资源的潜在攻击面。它还提供设备的透明管理以及资源的单一入口。
不过需要注意的是,当将跳转服务器合并到你的基础架构中时,请确保服务器已进行安全加固,否则使用或不使用跳转主机是没有区别的。
如何创建一个简单的SSH跳转服务器
现在简单介绍如何创建一个简单的SSH跳转服务器,以下是本示例的简单设置:
- 始发IPD地址:105.68.77.84。
- 跳转服务器IP地址(host-jump):173.82.232.55。
- 目标服务器IP地址(host_destination):173.82.227.89。
在上面的示例中,你想连接到host_destination(173.82.227.89),但由于防火墙、路由和访问权限的设置,必须通过host-jump(173.82.232.55才能访问。实际上需要使用跳转主机进行访问原因有很多,因人而异。
动态跳转主机列表
通过跳转主机连接到目标服务器的最简单方法是在命令行中使用-A
和-J
标志。这告诉SSH建立到跳转主机的连接,然后从那里建立到目标服务器的TCP转发(确保你有服务器之间的无密码SSH登录全向)。
$ ssh -A -J user@jump-server user@destination server
例如,在本文示例设置中,在跳转服务器上配置了名为james的用户,在目标或目标系统上配置了tecmint 。这样该命令从原始IP看起来如下。
$ ssh -A -J james@173.82.232.55 tecmint@173.82.227.89
该命令将提示输入跳转服务器的用户密码,然后是目标系统的密码,通过之后你将被授予访问目标系统的权限。
注意,如果机器上的用户名或端口不同,请在终端上指定它们,命令如下图所示:
$ ssh -J username@host1:port username@host2:port
多个跳转主机列表
其实,可以使用相同的语法在多个服务器上进行跳转,命令如下:
$ ssh -J username@host1:port,username@host2:port username@host3:port
静态跳转主机列表
静态跳转主机列表意味着,你需要知道连接机器所需的一个或多个跳转主机。因此,需要在~/.ssh/config
文件中添加以下静态跳转主机的“路由”,并指定主机别名,具体如下图所示:
### 第一个跳转主机,直接可达 Host vps1 HostName vps1.example.org ### 通过vps1.example.org跳转到的主机 Host contabo HostName contabo.example.org ProxyJump vps1
现在尝试通过跳转主机连接到目标服务器,如下图所示。
$ ssh -J vps1 contabo
第二种方法是使用ProxyCommand选项在~.ssh/config或$HOME/.ssh/conconfig文件中添加跳转主机配置,如图所示。
在此示例中,目标主机为contabo,跳转主机为vps1。
Host vps1 HostName vps1.example.org IdentityFile ~/.ssh/vps1.pem User ec2-user Host contabo HostName contabo.example.org IdentityFile ~/.ssh/contabovps Port 22 User admin Proxy Command ssh -q -W %h:%p vps1
保存更改并退出文件。当然,要应用更改,请重新启动SSH守护进程,命令如下:
$ sudo systemctl restart ssh
现在简单了解下配置文件中使用的选项:
-q
– 这代表安静模式,它会抑制警告和诊断消息。-W
– 请求将客户端上的标准输入和输出通过安全通道转发到PORT上的HOST。%h
– 指定要连接的主机。%p
– 指定要连接到远程主机上的端口。
要通过跳转服务器从原始 IP“跳转”到目标系统,只需运行以下命令:
$ ssh contabo
上述命令将首先在受ProxyCommand影响的后台打开到vps1的ssh连接,然后启动到目标服务器contabo的ssh会话。
设置SSH跳转服务器的安全性
使此设置更安全的方法之一是将公共SSH密钥从原始系统复制到跳转服务器,然后最终复制到目标系统,然后禁用密码身份验证。具体可以查看Linux系统中设置SSH无密码登录的三个步骤。或者,也可以查看保护和强化OpenSSH服务器安全的七种方法。
需要注意的是,请确保跳转服务器中没有存放敏感和重要的机密数据,因为这可能会导致访问凭据(例如用户名和密码)泄露,从而导致整个系统范围内的漏洞。
总结
目前就是这样,主要介绍了在Linux系统中配置基于SSH跳转主机,通过它可以访问远程服务器,如果对于原始IP主机的安全性比较看重的话,那么建立跳转主机访问目标Linux服务器是非常有必要的。
说白了,跳转主机就是一个中转平台,相当于第三方中介的作用,可以更好的保护原始IP用户的数据隐私安全。如果拿租房来举例,就是能更加安全保护租客的隐私信息,大概就是这个原理,懂了吧~