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');
    }

person Swapnil    schedule 20.09.2016    source источник


Ответы (2)


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

ssdh -ddd

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

person sonic_molson    schedule 20.09.2016

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

person neubert    schedule 21.09.2016