SFTP с открытым ключом без ошибок

я использую SSH-DSS ключ, порт 2222, Я могу подключиться через winscp со своего компьютера, используя открытый / закрытый ключи (peagent) и имя пользователя. (Закрытый ключ без пароля)

Но когда я пытаюсь сделать то же самое с PHP-скриптом, это не работает. Нет сообщения об ошибке. ssh2_auth_pubkey_file() возвращается blank/false, Таким образом, сценарий заканчивается

Сбой аутентификации с открытым ключом

Есть ли способ отладки ошибки?

Открытый / закрытый ключи создаются с помощью puttygen.

Вот фрагмент кода, который я использую:

    $methods = array('hostkey' => 'ssh-dss');

$connection = ssh2_connect('sftp.hostname.com', 2222, $methods);
if (!$connection) die('Connection failed');

$publicKeyPath = "./pubKey-OpenSSH";
$privateKeyPath = "./priKey.ppk";
echo file_get_contents($publicKeyPath);
echo "<hr />";
echo file_get_contents($privateKeyPath);
echo "<hr />";

if(ssh2_auth_pubkey_file($connection, 'USERNAME', $publicKeyPath, $privateKeyPath, ""))
{
echo "<br /><br /><b>Public Key Authentication Successful</b>\n";
}
else
{
print_r($connection);
die('<br /><br />Public Key Authentication Failed');
}

2

Решение

Если у вас есть root-доступ к серверу, вы можете остановить демон ssh и начать с

ssdh -ddd

Для отладки и следите за ошибками там.

0

Другие решения

Закрытый ключ — это ppk. Должен быть пем или дер, чтобы работать с ssh2_auth_pubkey_file, Вы можете использовать puttygen для преобразования ключа в соответствующий формат, перейдя в раздел Преобразования -> Экспорт ключа OpenSSH

0

По вопросам рекламы [email protected]