ssh 服务器是否有可能知道使用哪个公共域名登录?

Use*_*ion 3 linux dns ssh openssh sshd

我有一种情况,我需要设置一个 ssh 服务器,该服务器可由多个不同的公共域名访问,但会根据用户使用的域名为用户提供不同的 TTY 界面。

我想知道,如果下面的要求是可能的之前,我尝试实施它,如果是这样,如何:

我有两个域名,它们通过 ssh 提供两种不同类型的 BBS 式服务。实际上,两个域名都路由到了同一个物理Linux box,但是Linux box需要解析访问的是哪个域,给用户一种他们是两个独立服务的错觉。

例子:

当用户通过他们的用户名登录时,我想设置我的 ssh 服务器来确定用户是连接到 example.com 还是 example.org。如果他们连接到 user@example.com,他们将获得一个 bash shell,如果他们连接到 user@example。组织,他们应该得到一个基于 TTY 的 MUD 游戏。

我该如何从 sshd 获取这些信息?sshd 是否设置环境变量?或者,我是不是在错误的轨道上?在一台服务器上运行多个 ssh 服务是否有更简单的方法?

use*_*686 6

不可以。SSHv2 协议(与 HTTP 或 TLS 不同)没有让客户端向服务器提供此信息的标准方式。服务器只能看到 TCP 套接字信息(OpenSSH 在 $SSH_CONNECTION 中公开)。

您可以尝试在例如 OpenSSH 邮件列表上讨论新的协议扩展(实现它的逻辑方式是通过最近添加的密钥交换扩展机制),但即使它被编写并被接受,也需要很长时间才能完成大多数客户端支持此类主机名指示。

实际上,您需要为您的 MUD 域获取第二个 IP 地址,或者在备用 TCP 端口上运行游戏,或者设置一个特殊的用户名,告诉一个服务连接到另一个服务。