この記事は修正中です。
この記事は指摘が入り、修正中です。
詳しくは、 @angel_p_57 様のコメントをご覧下さい。
SSHでは公開鍵と秘密鍵という鍵のペアを使用して、共通鍵の交換を行います。
この記述そのもの、文面だけなら間違いではないんですが、その後の記述はもろもろ完全に間違いなので、そもそも技術内容を把握されてないと思います。書くならちゃんとウラを取りましょう。
※ただし、世の中解説を書いてる人のほぼ全てがウラを取らず想像・伝聞でしか書いてないので、検索してもマトモな記事はまず見つかりません。現実のソフトの動きを追うなり、公式の技術ドキュメントを読み込む必要があるので、注意が必要です。
通信の流れの概要は「SSHの公開鍵認証における良くある誤解の話」の「妥当な説明」の章に挙げてますが、予備知識なしで把握するのは難しいかも知れません。
最低限「SSHの公開鍵ってなに?」の内容が把握できていれば十分ではないかと思います。
SSHとは
SSH(Secure Shell)とはざっくり言うと、高度なパスワード認証を使って暗号化した通信を行う仕組みのことです。
暗号化することにより、安全にネットワーク越しに通信することができます。
まずはSSHでの通信の仕組みを軽く説明します。
SSHで使用する3つの鍵
SSHでは公開鍵と秘密鍵という鍵のペアを使用して、共通鍵の交換を行います。
とりあえずこの3つの鍵を説明します。
公開鍵とは
公開鍵とは相手に公開する鍵のことです。
この鍵はもしインターネット上に公開しても問題はありません。
この公開鍵を使うと、文字を暗号化することができます。
(鍵を掛けるイメージ)
秘密鍵とは
秘密鍵は言葉の通り自分だけが持っている秘密の鍵のことです。
名前の通り、絶対に自分以外の人に公開してはいけません。
この秘密鍵を使うと、公開鍵によって暗号化された文字を複合する(元の文字列に戻す)ことができます。
(鍵を開けるイメージ)
共通鍵とは
自分と通信相手だけにしか知られてはいけない鍵のことです。
(共通で使用するパスワードみたいなもの)
実際のSSHでの通信の流れ
登場人物
Aさん:通信を持ちかける人(クライアント)
Bさん:通信する人(ホスト)
A「Bさん、私と秘密の通信をしませんか?」
AがBに鍵(公開鍵)を渡す。
B「わかりました。ではこのパスワード(共通鍵)で通信しましょう」
BがAに共通鍵(公開鍵で共通鍵自体を暗号化する)を渡す。
その後Aは共通鍵を秘密鍵で複合する。
A「ふむふむ。このパスワードですね。わかりました」
以降、共通鍵で通信する。
SSHのメリット
秘密鍵を間違えて公開してしまわない限り、ほぼ、盗聴されることがないこと。
これが一番大きいです。
パスワード認証だと、相手のサーバーにIDとパスワードを送信することになります。
もし、これが盗聴されていたら、終わりです。
また、サーバー側からパスワードが漏洩する可能性もあります。
しかし、SSHでは自分が秘密鍵を間違えて漏洩させてしまわない限り、安全です。
SSHの鍵生成方法
これまでに説明した鍵ペアというものは簡単に作ることができます。
まずはターミナルアプリを開きます。
HOMEの下にSSH用のフォルダを作成し、そこに移動します。
以前に作成した鍵がないかも確認します。
lsコマンド(フォルダの中身を見るコマンド)で入力後に何も表示されなければ大丈夫です。
$ mkdir ~/.ssh
$ cd ~/.ssh
$ ls
次にRSAと呼ばれる方式の鍵のペアを作成します。
何点か聞かれますが、こだわりがなければEnter連打で大丈夫です。
$ ssh-keygen -t rsa
そしてlsコマンドで生成したファイルを確認します。
以下の二つがあれば大丈夫です。
.pubがついている方が公開鍵です。
$ ls
id_rsa id_rsa.pub
ここまでくれば、あとはサーバーに.pubを送信すればいいだけです。
ね、簡単でしょ。
参照
https://qiita.com/hanlio/items/689d796ec51fcf4c05aa
https://www.sejuku.net/blog/74220