Есть ли способ генерировать открытый ключ SSH из частного с помощью Python? - PullRequest
0 голосов
/ 06 октября 2010

... или, если нет, можете ли вы предоставить мне ссылку или номер RFC на полный алгоритм (от получения файла / строки закрытого ключа в кодировке ASCII до генерации файла / строки открытого ключа в кодировке ASCII).

Toпоказать вам большую картину - я начал использовать библиотеку pylibssh2.В этой библиотеке есть метод userauth_publickey_fromfile (он вызывает NotImplementedException, но когда вы принудительно запускаете связывание python - он работает).Проблема в том, что этот метод хочет закрытый ключ (хороший) и открытый ключ (черт знает почему).Конечно, я могу передать оба эти ключа в качестве аргументов своим функциям, но я думаю, что это не нужно, и я не хочу ожидать еще одну переменную только для этого.Поэтому я хочу сгенерировать открытый ключ из личного.

Может быть, я что-то упускаю в pylibssh2 или даже в самой libssh2 (я тоже могу написать привязки)?

Спасибоза любую помощь!

Ответы [ 3 ]

2 голосов
/ 06 октября 2010

Вам нужен ответ, чтобы быть строго питоном?Вы можете сделать это с ssh-keygen -y -f privatekey

0 голосов
/ 15 июля 2016
import commands
cmd = "ssh-keygen -y -f %s" % (file)
return commands.getstatusoutput(cmd)[1]
0 голосов
/ 07 октября 2010

Я не знаю, как у вас userauth_publickey_fromfile() работает, но согласно http://github.com/wallix/pylibssh2/blob/master/libssh2/session.py, этот метод ожидает путей к файлам ключей , а не самих ключей.

Если закрытый ключ принадлежит вам, то и открытый, и закрытый ключи должны находиться в вашем каталоге ~ / .ssh.

Закрытые и открытые ключи можно создавать только парами.Если вам удастся получить одно из них от другого, криптографическая вселенная взорвется.

Открытый ключ должен быть доступен для другой стороны соединения SSH.Поэтому этот метод ожидает его в дополнение к закрытому ключу.

...