之前关于如何设置SSH跳转服务器的教程,主要介绍了堡垒主机的概念。堡垒主机或跳转服务器是SSH客户端在访问目标远程Linux系统之前首先连接到的中间设备。SSH Jump服务器充当IT资源的网关,从而减少了攻击页面。
SSH ProxyJump和ProxyCommand命令确定了客户端是如何通过跳转服务器、跳转主机或堡垒服务器连接到远程服务器。在本文中,小编将简单介绍Linux 中的SSH ProxyJump和ProxyCommand的使用方法。
使用SSH ProxyJump命令远程连接Linux服务器
ProxyJump命令用标志-J
表示,它是在OpenSSH7.3服务器版本中引入的,可帮助用户通过跳过堡垒或跳转服务器来连接到远程目标。
下面的语法显示了如何使用此选项:
$ ssh -J <jump-server> <remote-target>
在多个堡垒或跳转服务器的情况下,语法采用以下格式:
$ ssh -J <jump-server-1> <jump-server-2> <remote-target>
在这两种情况下,你都将以root用户身份登录。由于安全原因,这并不理想,因此可能希望在每个实例中创建不同的用户。
当然,也可以显式指定不同的用户和SSH端口,如下所示:
$ ssh -J <user@jump-host:port> <user@remote-target:port>
为了演示ProxyJump标志的作用,这里有一个简单的设置,具体如下:
Jump Server IP: 173.82.232.55 User: james Remote Target IP: 173.82.227.89 User: tecmint
要使用跳转服务器连接到远程目标,命令如下所示:
$ ssh -J james@173.82.232.55 tecmint@173.82.227.89
该命令将提示你输入跳转服务器的用户密码,然后是目标系统的密码,这样将被授予访问目标系统的权限:
在~/.ssh/config文件中配置代理主机
如果经常使用特定的堡垒连接到特定的远程目标,可以在~/.ssh/config文件中附加以下ProxyJump配置以实现无缝连接。发生这种情况时,只会被验证一次,而且只会在远程目标上发生。
Host host-jump User james Hostname 173.82.232.55 Host host_destination User tecmint Hostname 173.82.227.89 Port 22
使用以上配置,可以如下图所示连接到目标主机:
$ ssh -J host_destination
使用SSH ProxyCommand命令连接远程Linux服务器
在SSH代理跳转之前,ProxyCommand是跳转主机到达远程目标的唯一方式。它的工作原理是通过跳转服务器或堡垒从远程目标转发标准输入(标准输入)和标准输出(标准输出)。ProxyCommand采用以下语法:
$ ssh -o ProxyCommand="ssh -W %h:%p <jump server>" <remote target>
在这里,-W
参数%h:%p
将stdin和stdout转发到远程主机(%h)
和远程主机的端口(%p)
。
要将命令生效,以下就是一个简单的示例:
$ ssh -o ProxyCommand="ssh -W %h:%p 173.82.232.55" 173.82.227.89
在 ~/.ssh/config 文件中配置 ProxyCommand
当然,键入整个命令既乏味又耗时。为避免键入如此冗长的命令,请将以下代码行添加到~/.ssh/config配置文件中。
Host host-destination Hostname 173.82.227.89 ProxyCommand ssh -q -W %h:%p host-jump
保存并退出。
现在你所要做的就是运行以下命令来连接到远程服务器。
$ ssh host-destination
总结
在本文中,小编简单介绍了ProxyJump和ProxyCommand命令的使用方法。通常情况下,ProxyJump作为ProxyCommand的更好替代品脱颖而出,并提供了一种更简单、无缝的方式来通过跳转主机连接到远程目标。
在使用Linux服务器时,如果需要设置跳转主机访问的话,那么ProxyJump和ProxyCommand应该是两个比较常用的命令。