(PECL ssh2 >= 1.4.0)
ssh2_auth_pubkey — Аутентифицирует клиента по открытому ключу в переменной
$session,$username,$pubkey,$privkey,$passphrase = ?Функция аутентифицирует клиента по открытому ключу, который содержит переменная.
sessionusernamepubkeyssh-rsa AAAAB3NzaC1yc2EAAA....NX6sqSnHA8= rsa-key-20121110
privkey-----BEGIN RSA PRIVATE KEY-----
passphraseprivkey.
Парольную фразу передают в параметр passphrase,
только если выполняются требования безопасности и закрытый ключ хранится в зашифрованном виде.
Функция возвращает true, если выполнилась успешно, или false, если возникла ошибка.
Пример #1 Пример аутентификации с открытым ключом
<?php
$connection = ssh2_connect('shell.example.com', 22, array('hostkey' => 'ssh-rsa'));
$publicKey = file_get_contents('/home/username/.ssh/id_rsa.pub');
$privateKey = file_get_contents('/home/username/.ssh/id_rsa');
if (ssh2_auth_pubkey(
$connection,
'username',
$publicKey,
$privateKey,
'secret'
)) {
echo "Клиент прошёл аутентификацию по открытому ключу\n";
} else {
die('Открытый ключ не подтвердил подлинность клиента');
}Замечание: Библиотека libssh, на базе которой работает PHP-модуль SSH2, не поддерживает частичное подтверждение подлинности на серверах с многофакторной аутентификацией, при которой требуется проверка и открытого ключа, и пароля. Поэтому на шаге проверки открытого ключа возврат значения
falseчасто указывает не на ошибку, а только на незавершённость процесса аутентификации. При многоступенчатой аутентификации ошибку игнорируют и вызывают функцию ssh2_auth_password(), чтобы завершить аутентификацию.