English | 简体中文 | 繁體中文
查询

ssh2_publickey_add()函数—用法及示例

「 添加公钥到已经存在的远程服务器的用户身份验证中 」


函数名称:ssh2_publickey_add()

适用版本:PHP 5 >= 5.3.0, PECL ssh2 >= 0.11.0

函数说明:ssh2_publickey_add() 函数用于添加公钥到已经存在的远程服务器的用户身份验证中。

语法:bool ssh2_publickey_add(resource $session, string $algoname, string $blob[, bool $overwrite = false[, array $attributes]])

参数:

  • $session:SSH2会话资源,通过 ssh2_connect() 函数创建。
  • $algoname:公钥算法名称,例如 "ssh-rsa" 或 "ssh-dss"。
  • $blob:公钥的二进制格式字符串。
  • $overwrite(可选):如果设置为 true,则会覆盖已经存在的公钥,默认为 false。
  • $attributes(可选):关联数组,包含公钥的附加属性。

返回值:成功时返回 true,失败时返回 false。

示例:

// 创建 SSH2 会话
$connection = ssh2_connect('example.com', 22);
if (!$connection) {
    die('Unable to connect.');
}

// 认证
if (!ssh2_auth_password($connection, 'username', 'password')) {
    die('Authentication failed.');
}

// 添加公钥
$publicKey = 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5...';
$added = ssh2_publickey_add($connection, 'ssh-rsa', base64_decode($publicKey));
if ($added) {
    echo 'Public key added successfully.';
} else {
    echo 'Failed to add public key.';
}

注意事项:

  • 在使用 ssh2_publickey_add() 函数之前,必须先通过 ssh2_auth_password() 或其他相关函数进行身份验证。
  • 公钥应该以正确的格式和编码传递给函数。在示例中,使用 base64_decode() 函数将公钥从 base64 编码解码为二进制格式。
  • 如果远程服务器已经存在相同的公钥,并且 $overwrite 参数设置为 false(默认值),那么该函数将返回 false,公钥不会被添加到服务器。如果要覆盖已存在的公钥,可以将 $overwrite 参数设置为 true。
  • 公钥的附加属性可以通过 $attributes 参数传递,如果没有附加属性,可以省略该参数。
  • 请确保在执行该函数之前,已经通过安全的方式获取到公钥,以防止安全风险。
补充纠错
上一个函数: ssh2_publickey_init()函数
下一个函数: ssh2_scp_send()函数
热门PHP函数
分享链接