网站搜索

如何在 Linux 中设置 SSH 跳转服务器


跳转主机(也称为跳转服务器)是远程网络的中间主机或 SSH 网关,通过它可以与远程网络中的另一台主机建立连接。不同的安全区域,例如非军事区 (DMZ)。它连接两个不同的安全区域并提供它们之间的受控访问。

跳转主机应该受到高度保护和监控,尤其是当它跨越专用网络和DMZ且服务器为互联网上的用户提供服务时。

一个典型的场景是从公司内部网络的台式机或笔记本电脑进行连接,该网络通过防火墙高度安全地连接到 DMZ。为了轻松管理 DMZ 中的服务器,您可以通过跳转主机访问它。

简而言之,SSH Jump 服务器是一台 Linux 服务器,用作通过 SSH 协议连接到专用网络上其他 Linux 服务器的网关。

在本文中,我们将演示如何通过跳转主机访问远程 Linux 服务器,并且我们还将在每用户 SSH 客户端配置中配置必要的设置。

SSH跳转服务器设置

考虑以下场景。

为了更清楚起见,下面是一个简单的设置,演示了 SSH Jump 服务器的作用。

配置SSH跳转服务器的原因

Jump 服务器提供了通往您的基础设施的网关,并减少了您的资源的潜在攻击面。它还提供透明的设备管理以及资源的单点入口。

请记住,当您将跳转服务器合并到基础设施中时,请确保该服务器经过强化,否则就和不使用一样好。我们将在本教程的后面部分讨论这一点。

如何创建一个简单的 SSH 跳转服务器

现在让我们关注如何创建一个简单的 SSH Jump 服务器。这是我们的简单设置。

  • 原始IP:105.68.76.85。
  • 跳转服务器IP(我们称之为主机跳转):173.82.232.55。
  • 目标IP(我们称之为host_destination):173.82.227.89。

在上述场景中,您想要连接到 HOST 2 (173.82.227.89),但由于防火墙的原因,您必须经过 HOST 1 (173.82.232.55),路由和访问权限。需要跳转主机有很多合理的理由。

动态跳转主机列表

通过跳转主机连接到目标服务器的最简单方法是在命令行中使用-A-J 标志。这告诉 ssh 与跳转主机建立连接,然后从那里建立到目标服务器的 TCP 转发(确保您在计算机之间进行无密码 SSH 登录)。

ssh -A -J user@jump-server  user@destination server

例如,在我们的设置中,我们在 Jump Server 上配置了名为 james 的用户,并在目标或目标系统上配置了 howtoing

从源 IP 来看,该命令如下所示。

ssh -A -J [email  [email 

该命令将提示您输入跳转服务器的用户密码,然后是目标系统的密码,您将被授予访问目标系统的权限。

如果计算机上的用户名端口不同,请在终端上指定它们,如图所示。

ssh -J username@host1:port username@host2:port	  

多个跳转主机列表

可以使用相同的语法来跳过多个服务器。

ssh -J username@host1:port,username@host2:port username@host3:port

静态跳转主机列表

静态跳转主机列表意味着您知道连接计算机所需的跳转主机跳转主机。因此,您需要在 ~/.ssh/config 文件中添加以下静态跳转主机“路由”,并指定主机别名,如下所示。

### First jumphost. Directly reachable
Host vps1
  HostName vps1.example.org

### Host to jump to via jumphost1.example.org
Host contabo
  HostName contabo.example.org
  ProxyJump vps1

现在尝试通过跳转主机连接到目标服务器,如图所示。

ssh -J vps1 contabo

第二种方法是使用 ProxyCommand 选项在 ~.ssh/config$HOME/ 中添加 jumphost 配置。 ssh/config 文件,如图所示。

在此示例中,目标主机为 contabojumphostvps1

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 上的主机。
  • %h – 指定要连接的主机。
  • %p – 指定要连接到远程主机的端口。

要通过跳转服务器从源 IP“跳转”到目标系统,只需运行以下命令:

ssh contabo

上述命令将首先在受ProxyCommand影响的后台打开到vps1的ssh连接,然后启动与目标服务器contabo的ssh会话强>。

让SSH跳转服务器更安全

使此设置更安全的方法之一是将公共 SSH 密钥从原始系统复制到跳转服务器,最后复制到目标系统,然后禁用密码身份验证。查看我们有关如何启用 SSH 无密码身份验证的指南。

此外,请查看 SSH 服务器强化技巧。

此外,请确保 Jump 服务器中没有存放任何敏感数据,因为这可能会导致用户名和密码等访问凭据泄露,从而导致系统范围内的泄露。

有关更多信息,请参阅 ssh 手册页或参考:OpenSSH/Cookbxook/代理和跳转主机。

目前为止就这样了!在本文中,我们演示了如何通过跳转主机访问远程服务器。使用下面的反馈表提出任何问题或与我们分享您的想法。