私の経験によると、ユーザーは公開鍵と秘密鍵でインフラストラクチャを無駄にします。 opensshは公開鍵を特定のディレクトリに制限することを可能にしますが(これによって大量の鍵が生成されるのを防ぎます)、秘密鍵に対して同様のメカニズムを提供しません(デフォルトを定義することはできますが、強制的に適用できますありません)。
理想的には、パスワードやパスフレーズ(Sshエージェントの初期パスフレーズを除く)を入力せずにホストにアクセスできることを願っています。
私の$ WORKユーザーがMS-Windowsでputtyを使ってssh旅行を始めましたが、私は彼らが利用可能な秘密鍵をsshサーバーとして機能するシステムにコピーするのを防ぐことにのみ興味があります。
これらのターゲットホストは他の場所でSSH接続を確立できる必要があるため、発信SSH接続を単にブロックすることはできません。
完全な特権アクセスソリューションを実装せずにユーザーが鍵ペアを使用して認証できますが、秘密鍵のコピーを防止する方法はありますか(または独自の鍵を生成し、秘密鍵/公開鍵の配布)?
答え1
あなたはできません。システムからファイルを読むことができる人は誰でもファイルをコピーできます。これはファイルシステムが機能する方法です。ファイルを読み取るファイルコピープログラムは、ファイルを読み取る他のプログラムと変わりません。
ただし、ユーザーにプロキシを渡すだけで、他のサーバーにログインする目標を達成できると説明し、接続が確立されたときにこれを行う方法についての指示を提供すると、これより簡単で簡単であることに気付くでしょう。キーをコピーします。これが私たちの仕事で行われることです。ユーザーにシェルホストへのアクセスを設定するための指示(OpenSSH用)を提供し、プロキシを転送するための指示を設定するように指示します(他のシステムにアクセスするために必要です)。それから彼らはそれをします。 SSH秘密鍵をシェルホストにコピーする必要はありません。
説明で述べたように、ユーザーがハードウェアセキュリティキーでサポートされているSSHキーを使用している場合、問題は効果的に解決されます。秘密鍵のコピーを防ぐことはできませんが、リモートシステムにハードウェアセキュリティキーを接続しないと、秘密鍵が機能しないため、この動作は抑制されます。ただし、この機能が機能するには比較的新しいバージョンのOpenSSHが必要であり、WindowsバージョンのOpenSSHがこの機能をサポートしているかどうかはわかりません。しかし、他には、このようなことが発生するのを防ぐ方法はありません。
答え2
ssh-agent
私は「プロキシ転送」という技術がユーザーがSSH(要塞?)ホストに秘密鍵を置くのを防ぐ方法になると思います。私はこれを直接使用しませんでしたが、どのように動作するのかを理解することは次のとおりです。
- ユーザーがSSHセッションを開くと、SSHエージェントはユーザーのホームコンピュータで実行され、エージェントはユーザーの秘密鍵をキャッシュします。彼らがあなたのサーバーにSSHでアクセスするとき、彼らのSSHクライアントはエージェントに主な質問に答えるように頼み、あなたのサーバーにログインします。
- サーバーのローカルSSH設定は、SSH接続を介してホームコンピュータからSSHクライアント(およびエージェント)にプライマリチャレンジを再送信するようにSSHクライアントに指示します。
- SSHホストから別のサーバーにSSH経由で接続すると、主な質問がホームコンピュータに返され、エージェントが応答します。サーバーに秘密鍵は必要ありません。
次のURLでガイドへの参照を見ました。https://docs.github.com/en/developers/overview/using-ssh-agent-forwardingしかし、私はそれを少し見ました。詳細については、Steve Friedlによって書かれたガイドへのリンクがあります。
これは人々が電話をかけるのに十分ではないかもしれませんが、ssh -i symcbean_hates_this_key_file
SSHサーバーでキーを使用する自動化された方法があれば、おそらくほとんどの人が電話を切るでしょう。