SSH 网关服务器

SSH 网关服务器

有没有办法设置 ssh 网关服务器?我想设置一种无需使用端口号即可从互联网远程连接到局域网上的特定 Linux shell 的方法。例如,登录将如下所示

ssh server1.domain.com 

或者

ssh server2.domain.com 

而不是 ssh domain.com:(portnumber)将端口转发映射(portnumber)到服务器私有 IP 地址的端口 22

每台服务器都有一个私有 IP 地址并共享公共 IP。

谢谢

答案1

按照您描述的方式这是不可能的,因为它ssh没有使用任何域和子域的概念(主机名不是协议的一部分,因为它是 HTTP 的一部分)。它仅使用主机名来获取 IP 地址并使用它(当然还有端口)。您的概念只有在您有公共 IP 地址列表时才会起作用,而当您问这个问题时您可能没有。

这种情况通常使用jumpbox服务器来解决,您可以使用公共 IP 进行连接,然后从那里看到本地网络(可能带有本地 DNS 名称)。这需要使用,例如:

ssh -t jumpbox ssh anotherhost.localdomain

但可以使用ProxyCommand客户端配置来简化:

Host *.localdomain
  ProxyCommand ssh -W %h:%p jumpbox

然后与远程节点的连接是透明的。当你输入

ssh anotherhost.localdomain

它将带你到目标主机jumpbox

答案2

以下是设置 SSH 网关服务器的命令:

$ ssh -L 2222:secureserver:22 user@gateway cat -

出现提示时输入密码(但无论如何,您实际上应该使用公钥认证)。之后,在另一个终端中,使用此密码连接到安全服务器。

$ ssh -p 2222 user2@localhost

就是这样。现在您可以使用 ssh、scp 或任何其他命令通过网关直接与安全服务器通信。您只需运行第一个命令一次并使其在隐藏终端中保持运行。

答案3

您还可以使用-J/ ProxyJump

-J destination
       Connect to the target host by first making a ssh connection to the
       jump host described by destination and then establishing a TCP
       forwarding to the ultimate destination from there.  Multiple jump
       hops may be specified separated by comma characters.  This is a
       shortcut to specify a ProxyJump configuration directive.  Note that
       configuration directives supplied on the command-line generally
       apply to the destination host and not any specified jump hosts.  Use
       ~/.ssh/config to specify configuration for jump hosts.

答案4

我知道这是一个老话题,但我有以下看法:

“Teleport SSH Gateway” 是一个很好的开源选项

https://goteleport.com/blog/ssh-jump-server/

相关内容