跳到主要内容

9. Host-Based Authentication: "hostbased" (基于主机的认证: "hostbased")

一些站点希望允许基于用户来自的主机和远程主机上的用户名进行认证。虽然这种认证形式不适合高安全性站点, 但在许多环境中可能非常方便。这种认证形式是可选的。使用时, 应特别注意防止普通用户获取私有主机密钥。

客户端通过发送以下消息来请求这种认证形式。它类似于 UNIX "rhosts" 和 "hosts.equiv" 认证样式, 除了更严格地检查客户端主机的身份。

此方法通过让客户端发送使用客户端主机私钥创建的签名来工作, 服务器使用该主机的公钥进行检查。一旦建立了客户端主机的身份, 就基于服务器和客户端上的用户名以及客户端主机名执行授权 (但不再进行认证)。

byte      SSH_MSG_USERAUTH_REQUEST
string user name
string service name
string "hostbased"
string public key algorithm for host key
string public host key and certificates for client host
string client host name expressed as the FQDN in US-ASCII
string user name on the client host in ISO-10646 UTF-8 encoding [RFC3629]
string signature

用于 'public key algorithm for host key' 的公钥算法名称在传输层规范 [SSH-TRANS] 中定义。'public host key and certificates for client host' 可能包含证书。

'signature' 的值是使用主机私钥对以下数据按此顺序的签名:

string    session identifier
byte SSH_MSG_USERAUTH_REQUEST
string user name
string service name
string "hostbased"
string public key algorithm for host key
string public host key and certificates for client host
string client host name expressed as the FQDN in US-ASCII
string user name on the client host in ISO-10646 UTF-8 encoding [RFC3629]

服务器必须验证主机密钥实际上属于消息中命名的客户端主机, 该主机上的给定用户被允许登录, 并且 'signature' 值是对给定主机密钥适当值的有效签名。如果服务器只想认证客户端主机, 它可以忽略客户端 'user name'。

只要有可能, 推荐服务器执行额外的检查以验证从 (不受信任的) 网络获得的网络地址与给定的客户端主机名匹配。这使得利用受损的主机密钥变得更加困难。请注意, 这可能需要对通过防火墙的连接进行特殊处理。