我正在尝试创建一个SSH服务器(使用Paramiko,但这在这里几乎无关紧要)。我想知道是否有任何方法来确定SSH客户端请求的主机名。例如,如果我要与
连接ssh user@example.com
但我也有一个指向同一服务器的CNAME记录,所以我也可以用
连接ssh user@foo.com
然后我希望服务器在第一种情况下知道用户请求example.com
,在第二种情况下,foo.com
。
我一直在阅读SSH协议文档,如:
https://tools.ietf.org/html/rfc4253 https://tools.ietf.org/html/rfc4252
但是无法确定是否有办法做到这一点。
答案 0 :(得分:0)
通常,ssh协议不支持此功能。给定的ssh客户端可能会发送一个环境变量来提供一个提示,但是这会在密钥交换和用户身份验证之后发生,这将远远超过您想要的信息。如果您通过RFC 4462中描述的ssh GSS-API机制之一使用Kerberos身份验证,您将获得用户作为GSS交换的一部分请求的主机名。这几乎肯定对你没有帮助,但它恰好是我知道发送这些信息的唯一情况。
对于ssh虚拟主机,您需要为每个虚拟主机专用IP地址或端口。查看端口共享或IPv6作为您的应用程序的可能性。