web-dev-qa-db-ja.com

SSH認証シーケンスとキーファイル:説明

SSHとrsyncをキーペアで使用してさまざまな問題をトラブルシューティングするための背景として、SSH認証中に発生する一連のイベントの簡単な概要と、複数のクライアントファイルとホストファイルのそれぞれがどのように機能するかを望んでいました。

グーグルは詳細なレベルで多くの説明を見つけました、範囲が狭いか、それらの詳細で広い範囲が乱雑でした。多くの誤ったまたは混乱した説明やフォーラムの投稿は言うまでもありません。

結局、2つのことを明確にするためにいくつかの図を作成しました。

  • キーを使用したSSH通信の準備に関係するファイルとアクション
  • 接続を確立するプロセス中にこれらのファイルが行うこと。

これらを以下の回答で掲載します。

4
gwideman

次の回答では、公開鍵と秘密鍵のペア(「公開鍵インフラストラクチャ」または「PKI」)を使用してssh認証を準備するために必要なファイルと、実際のsshセッション中にこれらのファイルがどのように使用されるかについて説明します。ここでのいくつかの仕様では、Linuxに適用される名前とディレクトリを使用していますが、原則は、これらに並行するプログラムとファイルを使用するすべてのプラットフォームに適用されます。重要な主な機能は次のとおりです。

  • ユーザーマシン
    • ユーザーキーペア:クライアント側ユーザーがssh-keygenを使用して作成する必要があるパブリックとプライベート。次のような名前のファイルを作成します:
      • 〜/ .ssh /id_rsa(プライベート)および
      • 〜/ .ssh /id_rsa.pub(パブリック)
      • 準備として、ホストのauthorized_keysファイルに与える必要があります
    • 〜/ .ssh /known_hosts
      • ユーザーが最初のログインでそれを受け入れる場合、サーバーから公開鍵を受け取ります。
  • ホスト(サーバー)マシン
    • ホストキーペア:パブリックとプライベート
      • サーバーへのopensshのインストールのようなある時点で自動的に作成されます。一般的な名前:
      • / etc/ssh /ssh_Host_rsa_key(プライベート)
      • /etc/ssh/ssh_Host_rsa_key.pub(パブリック)
      • ホストは、クライアント側ユーザーが初めてsshで接続しようとしたときに、クライアント側ユーザーに公開鍵を提供します。クライアントはホストのキーをknown_hostsに保存します
    • 〜/ .ssh /authorized_keys
      • 準備として、ログインする各ユーザーの公開鍵を提供する必要があります。
  • 実際のSSH(またはrsync)セッションでのイベントのシーケンス、ファイルがどのように関与しているかを示します。

(2つの異なる共通署名アルゴリズム、RSAとDSAがあることに注意してください。そのため、この説明で「rsa」を使用している場合、代わりに文字列「dsa」が表示される可能性があります。)

構成/準備enter image description here

SSH接続と使用enter image description here

これらの図がお役に立てば幸いです。

5
gwideman