如何在 Linux 中使用 SSH ProxyJump 和 SSH ProxyCommand
摘要: 在本指南中,我们介绍了在连接到跳转服务器时如何使用 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 的更好替代品出现,并提供一种通过跳转主机连接到远程目标的简单且无麻烦的方法。