查看源代码 ssh_client_key_api 行为 (ssh v5.2.5)
-behaviour(ssh_client_key_api).
描述 SSH 客户端公钥处理 API 的行为。通过实现此行为中定义的回调,可以自定义 SSH 客户端的公钥处理。默认情况下,ssh
应用程序借助标准的 OpenSSH 文件实现此行为,请参阅 ssh 应用程序手册。
概述
类型
提供给 ssh:connect/3,4 的选项。
回调
此函数已被弃用,推荐使用 Module:add_host_key/4
,后者是首选的 API 函数。如果调用 add_host_key/4
失败,则调用的 SSH 应用程序仍会尝试 add_host_key/3
。
将主机密钥添加到受信任主机密钥的集合中。
此函数已被弃用,推荐使用 Module:is_host_key/5
,后者是首选的 API 函数。如果调用 is_host_key/5
失败,则调用的 SSH 应用程序仍会尝试 is_host_key/4
。
检查主机密钥是否受信任。
使用与 PubKeyBlob 对应的私钥对 SigData 进行签名。
获取与 Algorithm
匹配的用户的公钥。某些密钥回调模块可能会返回 {ssh2_pubkey, PubKeyBlob :: binary()}
。
类型
-type client_key_cb_options(T) :: [{key_cb_private, [T]} | ssh:client_option()].
提供给 ssh:connect/3,4 的选项。
key_cb
选项中给出的选项列表可通过键 key_cb_private
获取。
回调
-callback add_host_key(Host :: string(), PublicKey :: public_key:public_key(), Options :: client_key_cb_options(any())) -> ok | {error, term()}.
此函数已被弃用,推荐使用 Module:add_host_key/4
,后者是首选的 API 函数。如果调用 add_host_key/4
失败,则调用的 SSH 应用程序仍会尝试 add_host_key/3
。
将主机密钥添加到受信任主机密钥的集合中。
-callback add_host_key(Host :: inet:ip_address() | inet:hostname() | [inet:ip_address() | inet:hostname()], Port :: inet:port_number(), PublicKey :: public_key:public_key(), Options :: client_key_cb_options(any())) -> ok | {error, term()}.
将主机密钥添加到受信任主机密钥的集合中。
此函数优于旧的 Module:add_host_key/3
,因为它还使用对等主机端口号并可能返回错误消息。
OTP/SSH 应用程序首先在回调模块中调用此函数,然后为了兼容性,再调用旧的 Module:add_host_key/3
。
-callback is_host_key(Key :: public_key:public_key(), Host :: string(), Algorithm :: ssh:pubkey_alg(), Options :: client_key_cb_options(any())) -> boolean().
此函数已被弃用,推荐使用 Module:is_host_key/5
,后者是首选的 API 函数。如果调用 is_host_key/5
失败,则调用的 SSH 应用程序仍会尝试 is_host_key/4
。
检查主机密钥是否受信任。
-callback is_host_key(Key :: public_key:public_key(), Host :: inet:ip_address() | inet:hostname() | [inet:ip_address() | inet:hostname()], Port :: inet:port_number(), Algorithm :: ssh:pubkey_alg(), Options :: client_key_cb_options(any())) -> boolean() | {error, term()}.
检查主机密钥是否受信任。
此函数优于旧的 Module:is_host_key/4
,因为它还使用对等主机端口号并可能返回错误消息。
OTP/SSH 应用程序首先在回调模块中调用此函数,然后为了兼容性,再调用旧的 Module:is_host_key/4
。
-callback sign(PubKeyBlob :: binary(), SigData :: binary(), Options :: client_key_cb_options(any())) -> Blob :: binary().
使用与 PubKeyBlob 对应的私钥对 SigData 进行签名。
-callback user_key(Algorithm :: ssh:pubkey_alg(), Options :: client_key_cb_options(any())) -> {ok, public_key:private_key()} | {ok, {ssh2_pubkey, PubKeyBlob :: binary()}} | {error, string()}.
获取与 Algorithm
匹配的用户的公钥。某些密钥回调模块可能会返回 {ssh2_pubkey, PubKeyBlob :: binary()}
。
注意
私钥包含公钥。