查看源代码 ssh_client_key_api 行为 (ssh v5.2.5)

-behaviour(ssh_client_key_api).

描述 SSH 客户端公钥处理 API 的行为。通过实现此行为中定义的回调,可以自定义 SSH 客户端的公钥处理。默认情况下,ssh 应用程序借助标准的 OpenSSH 文件实现此行为,请参阅 ssh 应用程序手册。

概述

回调

此函数已被弃用,推荐使用 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()}

类型

链接到此类型

client_key_cb_options(T)

查看源代码 (自 OTP R16B 起)
-type client_key_cb_options(T) :: [{key_cb_private, [T]} | ssh:client_option()].

提供给 ssh:connect/3,4 的选项。

key_cb 选项中给出的选项列表可通过键 key_cb_private 获取。

回调

链接到此回调

add_host_key(Host, PublicKey, Options)

查看源代码 (可选) (自 OTP R16B 起)
-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

将主机密钥添加到受信任主机密钥的集合中。

链接到此回调

add_host_key(Host, Port, PublicKey, Options)

查看源代码 (可选) (自 OTP R16B 起)
-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

链接到此回调

is_host_key(Key, Host, Algorithm, Options)

查看源代码 (可选) (自 OTP R16B 起)
-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

检查主机密钥是否受信任。

链接到此回调

is_host_key(Key, Host, Port, Algorithm, Options)

查看源代码 (可选) (自 OTP 23.0 起)
-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

链接到此回调

sign(PubKeyBlob, SigData, Options)

查看源代码 (可选) (自 OTP 23.0 起)
-callback sign(PubKeyBlob :: binary(), SigData :: binary(), Options :: client_key_cb_options(any())) ->
                  Blob :: binary().

使用与 PubKeyBlob 对应的私钥对 SigData 进行签名。

链接到此回调

user_key(Algorithm, Options)

查看源代码 (自 OTP R16B 起)
-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()}

注意

私钥包含公钥。