ssh2_fingerprint

(PECL ssh2 >= 0.9.0)

ssh2_fingerprint获取远程服务器指纹

描述

ssh2_fingerprint(resource $session, int $flags = SSH2_FINGERPRINT_MD5 | SSH2_FINGERPRINT_HEX): string

从活动会话返回服务器主机密钥哈希。

参数

session

一个 SSH 连接链接标识符,从 ssh2_connect() 的调用中获得。

flags

flags 可以是 SSH2_FINGERPRINT_MD5SSH2_FINGERPRINT_SHA1,逻辑或运算 SSH2_FINGERPRINT_HEXSSH2_FINGERPRINT_RAW

返回值

返回主机密钥哈希作为字符串。

示例

示例 #1 检查指纹是否与已知值匹配

<?php
$known_host
= '6F89C2F0A719B30CC38ABDF90755F2E4';

$connection = ssh2_connect('shell.example.com', 22);

$fingerprint = ssh2_fingerprint($connection,
SSH2_FINGERPRINT_MD5 | SSH2_FINGERPRINT_HEX);

if (
$fingerprint != $known_host) {
die(
"HOSTKEY MISMATCH!\n" .
"Possible Man-In-The-Middle Attack?");
}
?>

添加注释

用户贡献的注释 1 个注释

-22
Lyle Mantooth
10 年前
如果您要将指纹与用户提交的表单字段进行比较,最好执行不区分大小写的比较
<?php

if ($conn = ssh2_connect($user, $password)) {
$fingerprint = ssh2_fingerprint($conn);
if (
strcasecmp($fingerprint, $known_value) === 0) {
// 执行您的操作。
}
}
?>
当然,只有在使用 SSH2_FINGERPRINT_HEX 选项而不是 SSH2_FINGERPRINT_RAW 时才需要这样做。
To Top