2

使用telnetlib时,我注意到一些有趣的变量:

AUTHENTICATION = chr(37) # Authenticate
XAUTH = chr(41) # XAUTH
PRAGMA_LOGON = chr(138) # TELOPT PRAGMA LOGON
SSPI_LOGON = chr(139) # TELOPT SSPI LOGON

此外,此页面列出了一些详细描述AUTHENTICATION选项的 RFC。

如果我理解正确,如果 telnet 服务器支持身份验证,我应该IAC DO AUTHENTICATION在连接到它时收到。但是,当尝试在 Linux 机器上连接到telnetd时,我没有收到此选项,因此无法发送IAC WILL AUTHENTICATION.

我的理解正确吗?有没有办法让服务器执行身份验证?甚至可以自动验证 telnet 会话吗?(不听“登录:”、“用户名:”、“密码:”等类似提示)

4

1 回答 1

1

是的,您正确理解RFC 1416DO如果服务器支持身份验证,则服务器应首先发送。您可以尝试发送WILL,但这将违反规范,并且可能无论如何都无法正常工作。

通过 Linux telnetd,您可能指的是 netkit telnetd。据我在其手册页上看到的:

-a authmode 此选项可用于指定应使用哪种模式进行身份验证。请注意,此选项仅在 telnetd 已编译支持身份验证时才有用,当前版本中不提供此功能。[...]

所以我只想说它不能那样做。我正在使用 OpenBSD telnetd(telnet-bsdGentoo 中的软件包);它似乎有一些身份验证位,但我根本无法让它工作。我怀疑它只支持基于 Kerberos 的身份验证。

查看RFC 2941中的身份验证类型列表,似乎大多数身份验证类型甚至都没有指定。看看那些,DSS/DSA 最有趣(它也用于 SSH),但我想很难找到兼容的服务器客户端。可悲的是,那里似乎没有关于简单(明文)身份验证的建议。

所以,总结一下:是的,如果有人实现它是可能的。但是由于 telnet 实际上已经死了,我怀疑你会找到服务器实现。即使你这样做了,你也必须自己编写客户端,这对于支持的方案来说并不容易。所以我怀疑这是否值得。

于 2012-07-31T08:31:56.363 回答