Bitvise SSH服务器如何在没有密码的情况下对用户进行身份验证?

时间:2013-03-29 21:28:44

标签: windows winapi authentication

从版本5.50开始,Bitvise SSH服务器允许连接的客户端向Windows用户帐户进行身份验证,而无需提供此用户的Windows密码。见这里:https://www.bitvise.com/ssh-server-version-history

我自己检查了 - 确实如此。

我的问题是纯粹的好奇心:这是什么样的巫术?有没有允许这样的东西的WinAPI或者这是一种聪明的黑客?我一直认为不可能像没有密码的其他用户那样模仿(即使在配置Windows服务或计划任务以“以用户身份运行”时,也需要提供密码)。

2 个答案:

答案 0 :(得分:1)

IIRC,Cygwin中的SSH服务器做同样的事情。

如果您具有相应的权限,则可以使用ZwCreateToken创建访问令牌,无需密码。这样的令牌有一些限制。例如,如果没有密码和some encrypted material isn't accessible,则无法访问网络资源。

有一个解释和some sample code here

答案 1 :(得分:1)

从版本5.50开始,Bitvise SSH Server附带一个Windows身份验证包。身份验证包可以自定义方式增强Windows登录过程。当SSH服务器需要您登录但没有密码时(例如,因为您使用公钥登录),它会调用身份验证包来构造一个登录令牌,该令牌非常类似于本地创建的登录令牌视窗。正如arx所指出的那样,以这种方式创建的会话不包含您的身份验证凭据,因此副作用是您无法访问网络资源和EFS等内容。