最近AWSの勉強をしておりまして、EC2インスタンスにssh接続をして向こうのサーバーを操作しているのですが、
「ところでSSHってなんだっけ?安全な接続方式なんだろうけど、人に説明できないや。。。」
って感じなので、少し調べてみました。
SSHとは
プロトコルの一種。※プロトコルがわからない方はこちら
Secure Shellの略なのですが、文字通り、セキュア(安全)にShellをいじるための通信プロトコルということですね。
通信相手のコンピュータのシェルを操作するために用いられます。
元はtelnetという似たものが存在していたのですが、telnetは安全ではないです。
なぜかというと、平文で通信するから。盗聴されるとすぐに解読されてしまいます。
しかし、sshでの通信の場合、平文ではなく、暗号化して通信を行います。こうすれば通信を盗聴されても読まれる心配はありません。
じゃあ実際どのように使われるのよ?
調べましたが、いい感じに書いてくれている記事が存在しましたね。
こちらを参照ください。
この記事では、大体の流れをざっくり文字に起こします。
- ローカル側のコンピュータで秘密鍵&公開鍵の生成
- 公開鍵をリモート側に渡す(ようやくここでssh接続の準備が完了)
- ローカル側で
ssh ~
のように、コマンドでssh接続を行う - リモート側が公開鍵と乱数で暗号を作成→ローカル側に暗号を送信&ローカル側でハッシュ値を生成
- 暗号鍵(パスフレーズで復号済み)と受け取った暗号でローカル側が乱数を復号&乱数からハッシュ値を計算
- ローカル側で計算したハッシュ値とリモート側で生成したハッシュ値が一致すれば、認証完了