(PECL ssh2 >= 1.4.0)
ssh2_auth_pubkey — Аутентифицирует клиента по открытому ключу в переменной
$session,$username,$pubkey,$privkey,$passphrase = ?Функция аутентифицирует клиента по открытому ключу, который содержит переменная.
sessionИдентификатор канала SSH-соединения, который вернула функция ssh2_connect() .
usernameИмя пользователя, от лица которого требуется выполнить аутентификацию на удалённом сервере.
pubkey
Открытый ключ в формате OpenSSH, строка наподобие:
ssh-rsa AAAAB3NzaC1yc2EAAA....NX6sqSnHA8= rsa-key-20121110
privkey
Закрытый OpenSSH-ключ, который начинается со строки:
-----BEGIN RSA PRIVATE KEY-----
passphrase
Парольная фраза для расшифровки закрытого ключа privkey.
Парольную фразу передают в параметр 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() , чтобы завершить аутентификацию.