3

まず最初に、Google と stackoverflow を検索し、いくつかの読み取りを行いました (この座っているだけで 4 時間以上) が、次の理由で必要なものが見つかりませんでした:

  • それらの多くは、gpg.exe (http://stackoverflow.com/questions/1020320) のような exe を起動することを提案しています。

  • PyCrypto または他のライブラリを使用してそれらを調べることを提案した人もいます。a) API の使用方法が見つからない、b) 既存の prv/pub キーをインポートする方法が見つからない、または c) 彼らは安全でない RandomPool を使用します (更新しようとしているのは、トラブルを求めているだけです)。

  • ついでに言及する人もいますが、彼らがどこにリンクしているのかを見つけることができませんでした(またはリンクがまったくありませんでした.

だから私は知っている仲間のstackoverflowユーザーに、どうすればこれを行うことができるかを尋ね、公開鍵の文字列(またはパス)を取得します(一時ファイルに書き込むことができます(文字列pub_key = ".. ." ) ) ) を使用し、文字列 (フォーラム (アプリケーションを更新するための JSON) に投稿される文字列) に署名して保護しますか?

また、これらは PuttyGen を使用して生成された RSA キー (Putty Gen 4096 ビット SSH-2-RSA) です (任意の形式 (OpenSSH、ssh.com、ppk) にすることができます)

公開鍵はこんな感じ

---- SSH2 公開鍵の開始 ----

コメント: 「rsa-key-20101003」

AAAAB3NzaC1yc2EAAAABJQAAAgEAi+91fFsxZ7k1UuudSe5gZoavwARUyZScCtdf WQ0ROoJC+XIqW5vVJfgmr+A1jLS5m4wNsrCqeyoX2B22T6iEwqVXrXt3QcbccKMu WkLKFK1h67q6Coc+3eOTmKrOuZbWc19YQgybdkR/GxF7XAbq4NCGNaCDtMOqX8Q2 L/a9fAYqVdTwg9trpcz3whNmdLk/B0edOABKuVX51UdLV+ZggK503+uAb1JiIIj0 mARwR/HNo4oRLMLf2PjuZsGVYYjJDdVJBU6AN4PUQSRRRPL4+YmsrLJb/TpfJeXA vj4KZMNJv15YXz7/iMZMKznDtr2RJX5wbSpuTUBNZveA7YiIHxvvvis38b/lX9SJ SYPfZ9CeQY6MvQgG2zwDTOOvKgOIB4sTGMXfcoxB8AF/QXOcxWFJkZoj36rvMd9n Po6szLjHXwcEUOUvvQfG4VvdQA0H5gGLHqYL1EehRsgi5qcCoFPaZW2K09ErKcS0 MbrLFjBkQ9KmqAM38bvM8UhCWAMA9VXOGHMxUHBV4Bir9alGS4VX0B8Y0b3dZ+7I MKkHMCwdEUJf7QVdGxGuSQtVsq8RZbIpk3g7wtv8f6I/iEC58ekdrH35tq5+1ilW dkk9+rrhUy4qrZ+ HFi7AeemybpiumbSnebvnkMaIPAOo23V8C9BQ0iuxx4gIZf10 o+TPSK8=

---- SSH2 公開鍵の終了 ----

これではありません --> キー形式は PKCS1 のように見えるため、M2Crypto は機能しません (キーのロード関数は PEM を想定しています)。

最近読んだのは SSH Public Key File Format (RFC: http://www.ietf.org/rfc/rfc4716.txt )だと思います

また、以下は間違っていると思います.SSH公開鍵ファイル形式を処理しているとは思いません:(

また、ツイストは私が見るべき場所かもしれません

http://www.java2s.com/Open-Source/Python/Network/Twisted/Twisted-1.0.3/Twisted-1.0.3/twisted/conch/ssh/keys.py.htm

また、なぜ SO はすぐに報奨金を投稿することを許可しないのですか??

4

2 に答える 2

2

わかりました、ロードする方法を見つけました

from twisted.conch.ssh import keys as Keys
import base64

public_key = """\
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20101003"
AAAAB3NzaC1yc2EAAAABJQAAAgEAi+91fFsxZ7k1UuudSe5gZoavwARUyZScCtdf
WQ0ROoJC+XIqW5vVJfgmr+A1jLS5m4wNsrCqeyoX2B22T6iEwqVXrXt3QcbccKMu
WkLKFK1h67q6Coc+3eOTmKrOuZbWc19YQgybdkR/GxF7XAbq4NCGNaCDtMOqX8Q2
L/a9fAYqVdTwg9trpcz3whNmdLk/B0edOABKuVX51UdLV+ZggK503+uAb1JiIIj0
mARwR/HNo4oRLMLf2PjuZsGVYYjJDdVJBU6AN4PUQSRRRPL4+YmsrLJb/TpfJeXA
vj4KZMNJv15YXz7/iMZMKznDtr2RJX5wbSpuTUBNZveA7YiIHxvvvis38b/lX9SJ
SYPfZ9CeQY6MvQgG2zwDTOOvKgOIB4sTGMXfcoxB8AF/QXOcxWFJkZoj36rvMd9n
Po6szLjHXwcEUOUvvQfG4VvdQA0H5gGLHqYL1EehRsgi5qcCoFPaZW2K09ErKcS0
MbrLFjBkQ9KmqAM38bvM8UhCWAMA9VXOGHMxUHBV4Bir9alGS4VX0B8Y0b3dZ+7I
MKkHMCwdEUJf7QVdGxGuSQtVsq8RZbIpk3g7wtv8f6I/iEC58ekdrH35tq5+1ilW
dkk9+rrhUy4qrZ+HFi7AeemybpiumbSnebvnkMaIPAOo23V8C9BQ0iuxx4gIZf10
o+TPSK8=
---- END SSH2 PUBLIC KEY ----"""

key_data = ''.join(public_key.splitlines()[2:-1])# remove begin, end tags and comment
blob = base64.decodestring(key_data)
key = Keys.Key._fromString_BLOB(blob)
于 2010-10-04T18:17:58.050 に答える
0

少なくとも 2 つの比較的単純なオプションを考えることができます

  1. OpenSSL (または pyOpenSSL) を使用して BER を PEM に変換します。
  2. paramiko、twisted、またはその他の python SSH 実装を使用して、キーを直接操作します
于 2010-10-04T05:30:37.640 に答える