SSH(公開鍵・秘密鍵)
SSHは、離れた場所のサーバーに、暗号化した通信で安全にログインして操作するためのしくみです。
ログインのときは、パスワードの代わりに「公開鍵」と「秘密鍵」という2つで1組の鍵を使うことが多いです。
- SSHは、離れた場所のサーバーに、安全(暗号化された通信)でログインして操作するためのしくみ
- 鍵は2つで1組
- 公開鍵は人に見られても困らない
- 秘密鍵のファイルは、自分だけが読めるようにしておく
身近な例えで理解する
銀行などの取引先とは、あらかじめ自分の印影の見本を届けて、登録しておくことがあります。そのあとの手続きでは、手元の実印を書類に押します。取引先は、押された印を登録してある見本と照らし合わせて、本人だと確かめます。見本は取引先に預けておくものですが、実印そのものは本人が手元で大事に保管し、人に預けません。
- 取引先に登録しておく印影の見本公開鍵(前もってサーバーに登録しておく)
- 手元で保管する実印秘密鍵(自分だけが持つ)
- 押された印を、登録してある見本と照らし合わせるサーバーが登録してある公開鍵を使って、組になる秘密鍵を持っているか確かめる
- 実印を人に預けない秘密鍵を人に渡さない
違うところもあります。印影は見ればまねされるおそれがありますが、公開鍵から秘密鍵を割り出すことは、事実上できません。だから公開鍵は人に見られても困りません。
ちょっと確認
SSHでログインするとき、人に渡したり見せたりしてはいけないものはどれですか?
例えを外して、実際のしくみ
SSHは「遠くのサーバーを操作する道」
手元のパソコンから、サーバーにコマンドを打って操作できます。通信は暗号化されるので、途中で中身をのぞかれにくくなっています。ふつうは22番ポートを使います(→05 ポート番号。06 セキュリティグループで22番を許可したのはこのためです)
公開鍵と秘密鍵の置き場所
鍵の組は ssh-keygen というコマンドで自分で作れます(この場面はこちらの方法です)。AWSで「キーペア」を作る方法もあり、その場合は公開鍵がAWS側に置かれ、秘密鍵のファイルが手元にダウンロードされます。秘密鍵のファイルを保存できるのは、この1回だけです。どちらの方法でも、サーバーでは、ログインを認める公開鍵が、ユーザーごとの ~/.ssh/authorized_keys というファイルに書かれています
ログインのしかた
秘密鍵のファイルを指定して、たとえば ssh -i ~/.ssh/my-key.pem ユーザー名@server.example.com のように打ちます(ユーザー名はサーバーのOSによって違います)。初めてつなぐサーバーでは、サーバーの「指紋(フィンガープリント)」が表示され、つなぐ先が正しいか確かめるよう求められます
秘密鍵を守る
秘密鍵は人に渡さない、チャットやメールに貼らない、共有のフォルダに置かない、が基本です。漏れたら、まず会社のルールに従って報告し、その公開鍵をサーバーから消して使えないようにしてから、鍵を作り直します。また、秘密鍵のファイルは自分だけが読める状態にしておきます。ほかの人も読める状態だと、SSHはその秘密鍵を使わずに無視します(→次の 08 パーミッション)
このページのまとめ
- SSH
- 離れたサーバーに、暗号化した通信でログインして操作するしくみ(ふつう22番)
- 公開鍵
- サーバーに置いておく鍵。見られても困りません
- 秘密鍵
- 自分だけが持つ鍵。人に渡しません。漏れたら、まず報告して作り直します
- authorized_keys
- サーバー側で、ログインを認める公開鍵を書いておくファイル
先輩のひとことの意味
先輩「さっきもらった公開鍵、サーバーに登録しといたよ。自分の秘密鍵でSSHして入ってみて。秘密鍵は絶対に人に渡さないでね」
「22番は通るようにしたし、あなたの公開鍵もサーバーに登録した。だから、組になる手元の秘密鍵を使って、SSHでサーバーにログインしてみて。秘密鍵を持っていることがログインできる証拠になるから、ほかの人に渡したら、その人もあなたとしてログインできてしまうよ」という意味です。
練習問題で確かめる
この考え方の問題は何ですか?
左の言葉に合う説明を選びましょう。
左から1つ選び、次に右から合うものを選んでください。
参考資料
ご意見・「これで例えて!」を募集しています
ご意見・ご感想・質問・間違いのご指摘など、何でもお気軽にお寄せください。「この言葉も例えで説明してほしい」「こんな例えなら分かりやすい」という声をもとに、新しいページや例えを作ります。
- 説明してほしいITの言葉
- 例えてほしい場面(部活・アルバイト・家事など)
- 分かりにくかったところ・間違いのご指摘
意見箱は準備中です。