SSH接続の仕組みと秘密鍵/公開鍵
1. SSHとは
SSH(Secure Shell)は、ネットワークを通じてリモートのコンピュータと安全に通信するためのプロトコルです。主にリモートサーバーへのログインやコマンドの実行、ファイルの転送などに使用されます。暗号化された通信を行うことで、パスワードやデータの盗聴を防ぎます。
2. なぜSSHが必要か
以前はTelnetやFTPなどの通信手段が使われていましたが、これらは通信内容が暗号化されていなかったため、盗聴のリスクがありました。SSHはこれを解決し、公開鍵暗号方式を使ってより安全な接続を提供します。
3. SSHの仕組み
- クライアントがサーバーに接続要求を送る
- サーバーが公開鍵を提供し、クライアントが検証
- 共通鍵を生成し、暗号化された通信セッションを開始
4. 公開鍵認証方式とは
パスワードの代わりに、秘密鍵と公開鍵のペアを使って認証を行う方式です。クライアントは秘密鍵を保持し、サーバーに公開鍵を登録しておきます。
手順
- クライアントが公開鍵をサーバーに登録
- サーバーが認証時にクライアントへチャレンジを送信
- クライアントが秘密鍵で署名し、応答
- サーバーが署名を公開鍵で検証し、認証成功
5. 鍵の生成と配置
UNIX系OSでは ssh-keygen
コマンドで鍵ペアを生成します。
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
生成されるファイル:
~/.ssh/id_rsa
(秘密鍵)~/.ssh/id_rsa.pub
(公開鍵)
公開鍵をサーバーの~/.ssh/authorized_keys
に追加することで接続が可能になります。
6. SSH接続の実行
$ ssh ユーザー名@ホスト名
秘密鍵が適切に設定されていれば、パスワードなしでログインできます。
7. セキュリティ上の注意点
8. パスフレーズの扱いとssh-agent
毎回パスフレーズを入力するのが面倒な場合は ssh-agent
と ssh-add
を使うことで一時的に記憶させることができます。
9. よく使う設定ファイル
~/.ssh/config
:接続先をニックネームで管理sshd_config
:サーバー側のSSH設定
クライアント例:
Host myserver
HostName example.com
User ubuntu
IdentityFile ~/.ssh/id_rsa
10. まとめ
SSHはサーバー管理に欠かせない技術であり、特に公開鍵認証は安全なリモート操作を支える重要な要素です。鍵の生成、管理、セキュリティ対策を正しく行い、安心してSSH接続を活用できるようにしましょう。