OK、サーバーへのアクセスを提供する暗号化されたssh秘密鍵を持っています。私のUbuntu GNOMEデスクトップには、グラフィカルsshエージェント(seahorse v3.2.2)が統合されています。そのsshキーはこのsshエージェントにあり、デスクトップにログインすると自動的にロックが解除されます。何も入力しなくても、サーバー(この暗号化されたssh秘密鍵を使用する)にうまくsshできます。
ただし、このsshキーのパスワードを忘れてしまいました。
暗号化されていないssh秘密鍵を(sshエージェントから)抽出する方法はありますか?何を入れてもサーバーにログインできるので、コンピューター上の何かがこのキーの暗号化されていないバージョンにアクセスする可能性があることは明らかです。したがって、暗号化されていないバージョンを抽出できるはずです。
仕様ではできません。パスフレーズの全体的な考え方は、ディスクにアクセスして機密性の高いパスワードをのぞき見から保護することです。
Sshキーのパスワードはgnome-keyringにあると思います。 これ は、それを抽出するのに役立ちます。
私はあなたの質問を正しく理解しているとは思いません:
リモートサーバーが「この暗号化されたssh秘密鍵を使用する」理由がわかりません。デスクトップ上の同じ暗号化された秘密鍵であると言えますか?なぜ??
この句を省略した場合(およびリモートサーバーがリモートログインの関連するauthorized_keysファイルにPUBLICキーを持っている場合)、次のようになります。
起動時に開始し、自動的にキーへのアクセスを許可するエージェントがあります(つまり、ssh経由でリモートサーバーに接続しているときにアクセスを許可するために使用できます。リモートサーバー自体はおそらく公開キーを持っています)。したがって、エージェントはパスフレーズを知っており、ローカルの秘密鍵を復号化できます。
秘密鍵が暗号化されていることを確認しますか? (エージェントを停止して、次のことを試みることができます:
ssh -i /path/to/theprivatekey remoteuser@remoteserver
キーが実際に暗号化されている場合:起動時に実行されるエージェントには、明らかにパスワードを提供する方法があります。私はそのエージェントを知りませんが、おそらくそれは設定ファイルを介して(私は望んでいません)、そしておそらく他のメカニズムを介して(それ自体がプライベートパスフレーズを保持する別の暗号化を持っている可能性がありますか?何らかの方法で保護されています、おそらくあなた自身のログイン資格情報を介して) ?)。しかし:ロードされて使用されると(つまり、少なくともリモートsshサーバーにアクセスするとき)、ある時点で、暗号化されていない秘密のsshキーがメモリにあります。その時点で、RAMにアクセスしてローカルマシンにルートアクセスできる場合はそれを読むことができます(ただし、どこでどのように検索するかを見つける必要があります)。
これがお役に立てば幸いです(そして、質問のあいまいな部分を明確にするか、私の仮定を修正してください!)
編集:別のオプションで、はるかに単純です。そのエージェントはあなたにアクセスを許可します:それを使用して秘密/公開鍵の新しいペアを再作成し、その新しい公開鍵を(適切な形式で!リモートsshdサーバーのタイプに応じて!)配置します。 remoteuser @remoteserverのauthorized_keysファイルにあります。現在のもの(エージェントが使用しているもの)に加えて。そのため、常にエージェントを使用でき、新しい(ローカル)プライベート(リモート)公開鍵ペアも使用できます。 (sshとそれらのキーを作成する方法、および公開キーをどうするか(つまり、ログを記録する必要のある場所に置く)について読んで、プライベートにしてください(つまり、安全に保管してください。あなたの目だけを確認してください。パスフレーズで暗号化)。