OpenSSH
SSHについて
SSH (Secure Shell)は暗号化を用いたリモートホストの遠隔操作用プロトコル。
遠隔操作用のプロトコルのTELNETは通信内容が暗号化されない。
SSHクライアントがSSHサーバへアクセスする際、ホスト認証とユーザ認証が行われる。
ホスト認証
- SSHクライアントがSSHサーバへアクセス
- SSHサーバは公開鍵をSSHクライアントに送信する
- SSHクライアントは受け取った公開鍵と
~/.ssh/known_hosts
ファイルに格納されているSSHサーバの公開鍵と照らし合わせて認証を行う。
公開鍵方式
ユーザ毎に一対の公開鍵と秘密鍵を作成する事前準備が必要。
- 一対の公開鍵と秘密鍵を作成する
- ユーザの公開鍵を
~/.ssh/authorized_keys
に登録する。 - SSHクライアントがSSHサーバにアクセスした際にユーザの公開鍵を送信する
- SSHサーバが認証すると、SSHクライアントはユーザの秘密鍵を用いて署名を作成する。
- データを作成した署名をSSHサーバへと送信する
- ユーザの公開鍵で署名を検証し、ログインを許可する
OpenSSHの設定ファイル
SSHクライアント | SSHサーバ(sshd) | |
---|---|---|
config | /etc/ssh/ssh_config | /etc/ssh/sshd_config |
秘密鍵 | ~/.ssh/id_rsa | /etc/ssh/ssh_host_rsa_key |
公開鍵 | ~/.ssh/id_rsa_pub | /stc/ssh/ssh_host_rsa_key.pub |
認証鍵のリスト | ~/.ssh/known_hosts | ~/.ssh/authorized_keys |