OpenSSHでログインできるまでの流れ
SSHをなんとなくで使っていて、サーバーと接続できないとなった時に、どこから調べたらいいんだろうな?ってことがままあったので、お勉強を始めてみました。
ひとまずSSHでログインできるところまでの流れをまとめます。
なお、OpenSSHのプロトコルバージョン2の話です。
全体の流れ
- パラメータネゴシエーション
- セッション鍵交換 (DH鍵交換)
- ホスト認証
- ユーザ認証
- セッションの確立
パラメータネゴシエーション
- サーバーとクライアント間で使用する暗号方式やホスト鍵の形式を決めます
- 形式については、サーバーが提示するものをクライアントが選択して行きます。
- このやりとりの中で、決められない項目が1つでもある場合は、接続が終了します。
セッション鍵交換
- セッション鍵交換は、「Diffie-Hellman鍵交換方式 (DH鍵交換)」のみが使用できます。
- Diffie-Hellman鍵交換は、第三者が盗聴される可能性のあるネットワークでも、サーバーとクライアント間で安全に鍵を交換できます。
- 詳細は、こちら 入門OpenSSH / 第3章 OpenSSH のしくみ
ホスト認証
- ホスト認証では、クライアントが「ログイン先のサーバーが正しいかどうか」を確認します。
- 確認方法として、クライアントはサーバーから送られてきたホスト公開鍵をホスト公開鍵データベース(
~/.ssh/known_hosts
)と照合し、接続するかを判断します。 - デジタル署名を行い、クライアントに対してサーバーの証明を行います。
ユーザ認証
- ユーザ認証では、ログイン先のサーバーが接続してくるクライアントに対して、「正規のクライアントであるかどうか」を確認します。
- 確認方法として、クライアントは使用する認証方式をサーバーにリクエストし、それぞれの認証方式の手続きを経て完了させます。
セッションの確立
- セッション鍵の共有、ホスト認証、ユーザ認証がすべて完了するとセッションが確立し、環境の確認や設定、シェルへのログインが行われます。