1.OpenSSHとは
SSHは、SecureShellの略称でPC同士をネットワーク上でリモート接続するためのプロトコル。公開鍵暗号方式で安全に通信できる。通信の安全性確保のため、接続先ホストの正当性を確認する「ホスト認証」と、接続元ユーザーの正当性を確認する「ユーザー認証」という2つの認証を行う。
OpenSSHは、Linuxで動作するSSH実装用のオープンソースソフトウェアのこと。
2.認証の種類
(1)ホスト認証
接続先ホストの正当性を確認する認証方法。以下の流れで行われる。
- SSHクライアントがSSHホストに接続。
- SSHクライアントはSSHホストから公開鍵を入手。
- SSHクライアント内の「~/.ssh/known_hosts」ファイルを調べ、初回接続ならファイルにどのサーバの公開鍵かを記録し、2回目以降の接続ならファイルに保管された公開鍵と一致するかを確認。
- 公開鍵が一致していれば、SSHクライアントからSSHホストにログイン要求。
一致していなければ、終了。 - SSHクライアントからのログイン要求に対して、SSHホストがユーザー認証を行い、問題なければログイン。
(2)ユーザー認証
接続元ユーザーの正当性を確認する認証方法。パスワード認証と公開鍵認証のどちらかを用いた認証方法。
①パスワード認証
SSHホストはSSHクライアントに対して、ユーザー名とパスワードを求めて一致していれば、SSHクライアントに対してログインを許可する。
②公開鍵認証
<事前準備>
- SSHホスト側にSSHクライアントが使用するアカウントを作成。
- SSHクライアント側で秘密鍵と公開鍵のペアを作成。併せてパスフレーズも生成。
- SSHホストに公開鍵を送信。
- SSHホストは公開鍵を「~/.ssh/authorized_keys」ファイルに保存。
<本番>
- SSHクライアントからのログイン要求に対して、パスフレーズを求める。
- パスフレーズが正しい場合、SSHホストはSSHクライアントの秘密鍵とSSHホストの公開鍵でデジタル署名の検証を行う。
- 問題なければログインを許可する。