2011-11-13 9 views
4

JSchライブラリ(または実際にはsharpSSH C#ポート)を使用してSFTPの公開鍵クライアントとサーバー認証を設定する方法を検討しています。どのようなファイル形式は、ホストファイルを秘密鍵によって使用され、知られているJSchとsharpSSHの主要なファイル形式は何ですか?

jsch.addIdentity(filename, passphrase); 
jsch.setKnownHosts(filename); 

:残念ながら、私は、キーのロード機能で使用されるファイル形式の任意のドキュメントを見つけることができませんか?

答えて

8

JSchはOpenSSH キーファイル形式(公開鍵と秘密鍵の両方)を使用します。私はこのフォーマットの仕様は見つけられませんでしたが、OpenSSHのssh-keygenツールを使って他のフォーマットとの間でキーを変換することができます。

更新:RFC 4253 (section 6.6)に指定されているだけで、その周りにbase64でラッピングして、公開鍵をOpenSSHのメーリングリストで尋ねると、いくつかのRFCのOpenSSHの者の公開鍵ファイルが含まれているように、それが見えます(バージョン2キー)を読んだ後(キータイプはプレフィックスとして、コメントフィールドは後置として)。私はまだプライベートキーファイルの仕様を見つけていません。

残念ながら、JSchの公式ドキュメントはほとんど存在しませんが、私はJavadocsを書きました。 (これは重要なファイル形式は言わないようです...) JSch WikiにManualがあり、public key authenticationについてのページが含まれています(まだキーフォーマットについては触れていませんが: - )

既知のホストファイルも、OpenSSHクライアントの対応するファイルと同じ形式です。これらのファイルの

各行は、以下のフィールドが含まれています:それは、フォーマットがOpenSSH's sshd manual pageで説明されているセクションSSH既知のホスト・ファイル・フォーマットだマーカー (オプション)、ホスト名、ビット数、指数、係数、コメント。フィールドは、空白で区切られた です。

これは実際にはSSH 1 RSAキーにのみ適用されます。 SSH 2キーの場合、タイプ識別子(ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-dssまたはssh-rsa)があり、次にベース64エンコード形式のキーがあります。 (許可されたキーファイルについては、同じマニュアルページで少し上を参照してください)。 (私はJSCHだけで、何のECDSAをDSAおよびRSAキーの形式をサポートしていないと思います。)

注これらのファイル内の行は、通常、文字 何百ものであり、あなたは間違いなく、ホストで入力したくないことキーを手で押します。 代わりに、スクリプトssh-keyscan(1)を使用するか、または /etc/ssh/ssh_host_key.pubを取得し、フロントにホスト名を追加して生成します。 ssh-keygen(1)は、 〜/ .ssh/known_hostsの基本的な自動編集も提供しています。ホスト名に一致するホストを削除し、すべてのホスト名をハッシュ表現に変換します。

+0

ありがとうございます。文書化された形式を検討することができます。グーグル "jschのキーファイル形式"とこの質問は4位にランクされています:) – Patrick

関連する問題