web-dev-qa-db-ja.com

opensshキーとPuTTYキーの違いは何ですか?

ssh-keygen( "ssh"パッケージ)はputtygen( "PuTTY"パッケージ)とは異なるキーを生成することがわかりました。

ssh-keygenを使用して公開鍵と秘密鍵を作成すると、一部のsshサーバーが私の鍵を受け入れません。 puttygenを使用してキーを作成すると、1つのサーバーのみがそれを受け入れます。

Linuxリポジトリがそのための一般的なソリューション(パッケージ)を提案しないのはなぜですか? PuTTYで動作するキーを作成する別のパッケージ ssh-3.2.9.1 を見つけました。しかし、SSHに便利なソリューションがないのはなぜですか?

49
YarLinux

OpenSSHは、SSHプロトコルの事実上の標準実装です。 PuTTYとOpenSSHが異なる場合、PuTTYは互換性のないものです。

ssh-keygenとデフォルトのオプションを使用してOpenSSHでキーを生成すると、そこにあるほぼすべてのサーバーで動作します。このようなキーを受け入れないサーバーは、SSHの別の実装を使用したり、奇妙な制限された方法で構成されたりして、古くなります。デフォルト以外のタイプのキーは、一部のサーバーではサポートされていない場合があります。特に、ECDSAキーはセッションの確立を非常にわずかに高速化しますが、OpenSSHの最新バージョンでのみサポートされます。

PuTTYは異なるキーファイル形式を使用します。独自の.ppk形式とOpenSSHの形式の間で 変換 を行うためのツールが付属しています。

あなたが見つけたこのssh-3.2.9.1は、独自の異なる秘密鍵形式を持つ 商用製品 です。 OpenSSHの代わりにそれを使用する理由はありません。互換性が低くなるだけで、支払いが必要です。また、それを使用する方法についてのチュートリアルはほとんどありません。

ほとんどのLinuxディストリビューションでは、LinuxでPuTTYを利用できます。 Linux側にPuTTYをインストールし、puttygenを使用して.ppkファイルを通常のsshスタイルのキーファイル(PEMファイルと呼ばれる-に.pemを取得していなくても)に変換できます。ファイル名)。

puttygen id_dsa.ppk -O private-openssh -o id_dsa

注:puttygenを使用して、sshスタイルのPEMファイルをPuTTYにインポートして戻すこともできます。

PuTTYの作成者は単純化を選択したため、PuTTY/ssh 2キー認証で使用される基本的なセキュリティを構成する公開鍵と秘密鍵は、単一の独自の.ppkファイルに格納されます。通常、これらのキーはsshによって2つの個別のファイルとして保持されます。

Linuxでは、キーファイルは通常、ディレクトリ.sshに保存されます。

このタイトルのスタックオーバーフローの質問 PEMをPPKファイル形式に変換 にある変換プロセスの良い概要がここにあります。

PuTTYの作者は、.ppkファイルを使用する根拠についても PuTTY users manual で説明しています。これについては、セクション8.2.12を参照してください。

24
slm

どちらも「SSHプロトコルのバージョン2のRSAキーペア」を保存し、変換して相互に変換できます。ただし、実際に保存されている形式の違いについて:

https://www.chiark.greenend.org.uk/~sgtatham/PuTTY/wishlist/key-formats-natively.html から

PuTTYキー形式の利点は次のとおりです。

  • 鍵の公開半分はプレーンテキストで保存されますOpenSSHの秘密鍵形式は鍵ファイル全体を暗号化しますクライアントがあなたに尋ねるようにキーを使用して何かを実行する前のパスフレーズ。特に、これは、認証を行う前に、サーバーへの公開キーofferを取得する前に、パスフレーズを要求する必要があることを意味します。 PuTTYの形式は、公開鍵をプレーンテキストで保存し、秘密の半分のみを暗号化します。つまり、公開鍵をサーバーに自動的に送信し、サーバーがその鍵による認証を受け入れる用意があるかどうかを判断できます。本当に必要な場合はパスフレーズ。

    OpenSSHは.pubファイルを秘密鍵ファイルと一緒に表示する場合はこの目的で使用しますが、これは利便性と同じくらい混乱の元になります(私は、秘密鍵ファイルを置き換えて古くなったままにしているのを見てきました.pubそれと一緒に使用すると、結果のSSH認証プロセスに非常に混乱します!)。
  • 鍵は完全に改ざん防止されています。公開鍵を平文で保存する鍵形式は、鍵の公開半分が変更される改ざん攻撃に対して脆弱である可能性があります医者の鍵で作られた署名が秘密の半分についての情報を漏らすような方法で。このため、PuTTYのキー形式にはMAC(メッセージ認証コード)が含まれ、パスフレーズがキーオフされ、キーの公開部分と非公開部分がカバーされます。したがって、公開鍵をプレーンテキストで利用できるという利便性を提供しますが、改ざん攻撃の試みを即座に検出し、他のセキュリティでは見られないと思われるセキュリティと利便性の組み合わせを提供しますキー形式。副次的な利点として、MACはキーのコメントもカバーするので、誰かが2つのキーを交換してコメントを交換した場合に起こり得る悪用を防ぐことができます。

    公開鍵の暗号化を維持するOpenSSHのアプローチmightもこの種の攻撃に対するセキュリティを提供しますが、適切な保護を提供するかどうかは不明です:機密性のために設計された暗号化は、多くの場合、暗号化されたデータは、攻撃者によって便利に変更される可能性があります。真の完全性保護のためには、まさにそれを行うように設計された真の専用MACが必要です。

[強調が追加されました]

12
PeanutPower