如何在 Linux 中使用 SSH ProxyJump 和 SSH ProxyCommand

yanding 2023-07-11 1565

摘要: 在本指南中,我们介绍了在连接到跳转服务器时如何使用 SSH ProxyJump 和 SSH ProxyCommand 命令。


在我们之前关于如何设置 SSH Jump 服务器的指南中,我们讨论了堡垒主机的概念。Bastion 主机或跳转服务器是 SSH 客户端在访问目标远程 Linux 系统之前首先连接的中间设备。SSH Jump 服务器充当 IT 资产的网关,从而减少攻击面。


SSH ProxyJump 和 ProxyCommand 命令确定客户端如何通过跳转服务器、跳转主机或堡垒服务器连接到远程服务器。


本指南阐述了 Linux 中的 SSH ProxyJump 和 SSH 代理命令。

目录

使用 SSH ProxyJump 命令连接到远程 Linux

-JProxyJump 命令已标记。它是在 OpenSSH 服务器版本 7.3 中引入的,可帮助您通过跳过堡垒或跳转服务器来连接到远程目标。



下面的词汇表显示了如何使用此选项:


$ ssh -J <跳转服务器> <远程目标>

对于多个堡垒或跳转服务器,语法采用以下形式。


$ ssh -J <跳转服务器-1> <跳转服务器-2> <远程目标>

在这两种情况下,他们都会在每一步中以根用户身份登录。出于安全原因,这不合适,因此您可以在每种情况下创建不同的用户。


您可以显式指定不同的用户和 SSH 端口,如图所示。


$ ssh -J <[电子邮件:端口> <[电子邮件:端口>

为了显示正在运行的 ProxyJump 标志,我们有一个简单的过程,如图所示。


跳转服务器IP:173.82.232.55 用户:james

远程目标IP:173.82.227.89 用户:howtoing

要使用 Jump 服务器连接到远程目标,命令如下所示。


$ ssh -J [电子邮件 [电子邮件 

该命令会要求您输入跳转服务器的用户密码,然后输入目标系统的密码,您将被允许访问目标系统。



如果您经常使用特定的硬盘驱动器连接到特定的远程目标,则可以将以下 ProxyJump 设置添加到 ~/.ssh/config 文件以同步连接。如果发生这种情况,您只会被验证一次,并且这只发生在搜索目标上。


主机主机跳转

用户詹姆斯

主机名 173.82.232.55


主机 host_destination

用户技术

主机名 173.82.227.89

端口22

使用上述过程,您可以如图所示连接到目标。


$ ssh -J 主机目的地


使用 SSH ProxyCommand 命令连接到远程 Linux

在 SSH 代理跳转之前,ProxyCommand 是跳转主机到达远程目标的唯一方法。它的工作原理是通过跳转服务器或堡垒从远程目标发送 stdin(标准输入)和 stdout(标准输出)。



ProxyCommand 接受以下语法。


$ ssh -o ProxyCommand="ssh -W %h:%p <跳转服务器>" <远程目标>

此时,-Wgo %h:%pargument 将标准输入转发并输出到远程主机(%h)和远程主机端口(%p).


为了实现代码,我们的代码如下所示


$ ssh -o ProxyCommand="ssh -W %h:%p 173.82.232.55" 173.82.227.89


当然,编写整个代码是乏味且耗时的。为了避免编写如此长的命令,请将以下代码行添加到 ~/.ssh/config 文件中。


主机 主机-目的地

主机名 173.82.227.89

ProxyCommand ssh -q -W %h:%p 主机跳转

做好准备并摆脱困境。


现在您所要做的就是运行以下命令来连接到远程服务器。


$ ssh 主机目的地

在本指南中,我们将展示 ProxyJump 和 ProxyCommand 命令的工作原理。ProxyJump 通常作为 ProxyCommand 的更好替代品出现,并提供一种通过跳转主机连接到远程目标的简单且无麻烦的方法。

言鼎科技

The End