PHP/Bash: создание PPK из ключа OpenSSH с парольной фразой

Я хотел бы создать php-скрипт, который создает ключи для ssh-аутентификации. я начал с

exec("ssh-keygen -b 1024 -t dsa -N *pwd* -f *path-to-file* -q");

для создания пары закрытых и открытых ключей. Нет проблем, пока здесь ;)

Теперь мне нужно преобразовать OpenSSL-Key в формат ppk PuTTY (в cmd, а не в графическом интерфейсе). Если у кого-то есть идеи о том, как с этим справиться, пожалуйста, дайте мне знать.

Спасибо


person craCH    schedule 21.04.2013    source источник


Ответы (2)


Если вы работали с ключами RSA, вы могли бы сделать это (требуется phpseclib):

<?php
include('Crypt/RSA.php');

$rsa = new Crypt_RSA();
$rsa->setPassword('password');
$rsa->loadKey('...');

//$rsa->setPassword(); // clear the password if there was one
echo $rsa->getPrivateKey(CRYPT_RSA_PRIVATE_FORMAT_PUTTY);
?>
person neubert    schedule 25.04.2013

Вы не указали, на какой ОС работаете. В *nix вы можете использовать PuTTYgen (из PuTTY):

puttygen openssl-key -o mykey.ppk

Подробнее см.: https://linux.die.net/man/1/puttygen

В Windows PuTTYgen — это только приложение с графическим интерфейсом. Хотя вы можете использовать WinSCP, он имеет совместимый с PuTTYgen интерфейс командной строки:

winscp.com /keygen openssl-key -o mykey.ppk
person Martin Prikryl    schedule 21.04.2013
comment
Я запускаю его на сервере Debian. - person craCH; 22.04.2013
comment
Это хорошее решение, но проблема заключается в ОШИБКЕ в этом инструменте (см. man-страницу). ОШИБКИ: В настоящее время нет способа предоставить парольные фразы в пакетном режиме или даже просто указать, что вам вообще не нужна парольная фраза. - person craCH; 22.04.2013