
私は、ガイドに従うだけでなく、人々が尋ねてきたときに適切な対応を勧めることができるように、これを学ぼうとしています (尋ねてくる人はいます)。私が書き留めたものは次のとおりです。
まず、次のようなコマンドで両方のキーを生成します。
ssh-keygen -b 2048 -t rsa -C comment -f ~/.ssh/id_rsa
次に、キーの公開部分をauthorized_keys2ファイルにプッシュします。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys2
(そしてそれを 600 または同様の値に変更します)
そして、秘密鍵 (id_rsa) をコンピューターにダウンロードし、それを Putty に入力して読み取って認証します。
SSH へのパスワードなしログイン用にこの公開/秘密キー認証を設定する手順は正しいですか?
答え1
説明されている手順は機能しますが、問題があります。ターゲット (リモート) コンピューターでキー ペアを生成し、秘密キー ファイルをローカル システムにダウンロードしています。ここでは、見落としてはならないセキュリティ上の問題があります。
- リモコンがすでに侵害されている場合は、誰かがパスフレーズを入手した可能性があります。
- 将来リモート システムが侵害された場合、攻撃者は秘密鍵ファイルにアクセスできるようになります (また、オフラインのブルート フォース攻撃を使用してそれを復号化することもできます)。
パスワード認証に固有の問題のいくつかを解決するために ssh キー ペアを使用している (解決しようとしている) ため、通常は次のようにします。
ローカル システムでキー ペアを生成します。理想的には、秘密キーは (a) 共有ファイル システム (NFS ホーム ディレクトリなど) に保存されず、(b) リモート ログインを許可するコンピューターに保存されません。
公開鍵を広く公開します。私は公開鍵を Web サイトに保存して、必要なときにいつでも取得できるようにしています。
authorized_keys
接続先のシステム上の適切なファイルに公開鍵を配置します。
特に心配な場合は、秘密鍵をサムドライブに保存し、そのドライブは実行中の に鍵をロードするためだけに使用できますssh-agent
。この時点で、実際の鍵ファイルはもう必要ありません。
答え2
クライアント システムでキーを生成する方がよい場合があります。authorized_keys ファイルのサイズが大きくなる可能性がありますが、侵害されたシステムを無効にする方が簡単です。サーバーの秘密キーを移行する場合は、キーを再生成してすべてのクライアント システムに移行する必要があります。各クライアントには独自のキーが必要です。
Putty はputtygen
キーを生成するために を使用します。puttygen
また、クライアント システムに貼り付けるための正しい形式の公開キーも提供します。ログイン アクセスに使用する場合は、パスフレーズでキーを保護するのが最適です。 Pageant
または、ssh-agent
保護されていないキーをメモリに保持して、接続ごとにパスフレーズを再入力する必要がないようにすることもできます。
キーを 1 つ追加して保護を設定したら、権限をリセットせずにキーを追加できます。通常、次のような名前のシステムから公開キーをアップロードします (example.pub
例はキーが属するシステムの名前)。
authorized_keys
多くの実装では、キー ファイルとして を使用するようになりました。このファイルを使用すると、キーを受け入れるシステムを制限したり、コマンドを強制的に実行したり、アクセスを制限したりすることができます。man
詳細については、ページを参照してください。
場合によっては、クライアント システムに複数のキーがあると便利なことがあります。これは、パスワードのないキーで実行されるバッチ プロセスをサポートするために行うことができます。
答え3
それは良さそうです。多くの人は逆の方向(ローカルでキーを生成し、それを.pub
サーバーにプッシュする)で実行しますが、どちらでも機能します。