【问题标题】:SSH protocol determine hostname used by clientSSH 协议确定客户端使用的主机名
【发布时间】:2018-04-21 09:58:00
【问题描述】:

我正在尝试创建一个 SSH 服务器(使用 Paramiko,但这在这里几乎无关紧要)。我想知道是否有任何方法可以确定 SSH 客户端请求的主机名。例如,如果我要连接

ssh user@example.com

但我也有一条指向同一服务器的 CNAME 记录,因此我也可以连接

ssh user@foo.com

那么我希望服务器知道在第一种情况下用户请求example.com,在第二种情况下,foo.com

我一直在阅读 SSH 协议文档,例如:

https://www.rfc-editor.org/rfc/rfc4253 https://www.rfc-editor.org/rfc/rfc4252

但不知道是否有办法做到这一点。

【问题讨论】:

    标签: ssh paramiko openssh


    【解决方案1】:

    一般来说,ssh 协议不支持这个。给定的 ssh 客户端可能会发送一个环境变量来为您提供提示,但这会在密钥交换和用户身份验证之后发生,这将远远晚于您想要的信息。碰巧的是,如果您通过 RFC 4462 中描述的 ssh GSS-API 机制之一使用 Kerberos 身份验证,您将获得用户请求的主机名作为 GSS 交换的一部分。这几乎肯定对您没有帮助,但它恰好是我知道此信息被发送到哪里的唯一情况。

    对于 ssh 虚拟主机,您需要为每个虚拟主机指定一个 IP 地址或端口。看看端口共享或 IPv6 是否适合您的应用程序。

    【讨论】:

      猜你喜欢
      • 2012-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多