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_MD5 или SSH2_FINGERPRINT_SHA1, объединённые логическим ИЛИ (OR) с SSH2_FINGERPRINT_HEX или SSH2_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(
"Ключ хоста не совпадает!\n" .
"Возможно, атака посредника?");
}
?>

add a note add a note

User Contributed Notes 1 note

up
-16
Lyle Mantooth
11 years ago
If you're going to compare the fingerprint to a user-submitted form field, it's probably a good idea to do case-insensitive comparison:
<?php

if ($conn = ssh2_connect($user, $password)) {
   
$fingerprint = ssh2_fingerprint($conn);
    if (
strcasecmp($fingerprint, $known_value) === 0) {
       
// Do your thing.
   
}
}
?>
Of course, this is only necessary when you use the SSH2_FINGERPRINT_HEX option, not SSH2_FINGERPRINT_RAW.
To Top