linux-generating-ssh-keys
LinuxでのSSHキーの生成
1. 概要
このチュートリアルでは、SSHキーの基本と、LinuxでSSHキーペアを生成する方法について説明します。
2. セキュアシェル(SSH)
-
Secure Shell(SSH)は、公開キー暗号化*を利用してクライアントとサーバー間の通信を暗号化する安全なリモートログインプロトコルです。
2.1. 公開鍵暗号化
一般に、公開キー暗号化(非対称暗号化とも呼ばれます)には、互いに補完するキーペア(公開キーと秘密キー)が必要です。 *公開キーを使用して、対応する秘密キーで暗号化されたメッセージを解読します。その逆も同様です。
*暗号化したのと同じキーでメッセージを復号化できないことに注意してください*。 したがって、対応する秘密キーで暗号化されている場合、秘密キーを使用してメッセージを復号化することはできません。
同様に、同じ公開キーで暗号化されている場合、公開キーを使用してメッセージを復号化することはできません。 したがって、秘密鍵を共有しない限り、公開鍵を自由に共有できます。これは、両方がメッセージの暗号化と復号化に必要であるためです。
2.2. 送信者の認証
SSHは、公開鍵暗号化を使用して、クライアントが本人であることを保証します。 まず、クライアントは、クライアントの公開鍵をサーバーに送信してサーバーに登録する必要があります。 *サーバーはこの公開鍵を認証済みクライアントのリストに記録し、IDを割り当てます*。 サーバーとクライアントの両方がこのIDを知っています。
登録が完了すると、クライアントは後で次の手順を使用してサーバーで認証できます。
-
クライアントとサーバーは、を使用して秘密鍵に同意します
Diffie-Hellman鍵交換アルゴリズム。 -
クライアントはサーバーにIDを送信します。
-
サーバーは、受信したIDがそのリストにあることを確認するためにチェックします
認証済みクライアント。 -
サーバーは乱数を作成し、クライアントの
受信したIDに対応する公開キー、およびクライアントに送信します。 -
クライアントは、秘密鍵で乱数を解読します。
-
クライアントは乱数と秘密鍵を組み合わせてハッシュ化し、
それをサーバーに送信します。 -
サーバーは、組み合わされた乱数とシークレットのハッシュを計算します。
-
サーバーは、計算されたハッシュと
クライアント。計算されたハッシュと受信されたハッシュが一致する場合、認証は成功です。
基本的に、* SSHは、記録された公開キーでデータを暗号化してクライアントに送信し、クライアントが同じデータを復号化して返送することを要求することにより、クライアントをテストします*。 クライアントが同じデータを正常に復号化して送り返すことができる場合、記録された公開キーに関連付けられた秘密キーが必要です。 したがって、クライアントは本人であると主張します。
3. SSHキーの生成
当然のことながら、https://github.com/ [GitHub]やhttps://about.gitlab.com/[GitLab]など、最も人気のあるWebサイトの多くはSSH認証を使用しています。
これらのWebサイトでこのメカニズムを使用するには、SSHキーペアを作成する必要があります。 現在のユーザーのキーペアを生成するには、次を実行します。
ssh-keygen
キーペア、パスフレーズ、およびパスフレーズの確認を保存する場所を入力するよう求められます。 各プロンプトでEnterキーを押して、3つすべてのデフォルトを選択します。
デフォルトでは、_ssh-keygen_はキーペアを_〜/ .ssh_に保存します。 そのディレクトリには、秘密鍵と公開鍵にそれぞれ対応する2つのファイル_id_rsa_と_id_rsa.pub_があります。
*秘密鍵(_id_rsa_)は決して共有しないでください。*
さらに、_cat〜/ .ssh / id_rsa.pub_を実行して、公開キーの内容を表示できます。 出力は次のようになります。
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD1Y6mRUepVaEZ+6ghg+ju/iirHQqQbuE3Wy6aEb+b
nKlzqFgAyGFuQSw+DuDqyZkWFd9O4Al4TOr7bQsS6Xji2GUt0ikr9/gv2pVwUd9LBiEAks+HEfb4tMO
77FMGQ4BytU9ssYCjCRT4F7rx0li0qUqhgao7syaxu4PTI+p+Auz1Y1wwVf7T4Pwd9YFcThTa6+Lr5r
vbft8Ws2KwHDEzNH2lf9UoiN1Lcd5szHpT1iXz9jvb3Fmd2I8d8seThde5WHI7N6t+ojyqntIc9bMW9
TL2uw/kFtZfIsC4/OKDVscWRBxY7xkb/4N5UJJ9OL2cpu1fZBHL9T6TG4lOyIEMj
[email protected]
3.1. デフォルトの場所の変更
キーペアを特定の場所に保存するには、_ssh-keygen_を実行し、プロンプトが表示されたら場所を入力します。
Enter file in which to save the key (/home/my-username/.ssh/id_rsa):
プロンプトには秘密鍵の名前のみが含まれますが、* _ ssh-keygen_は*同じディレクトリに_.pub_拡張子を持つ公開鍵ファイルを生成します*。
_-f_フラグを使用して、特定のファイル名で現在のディレクトリにキーペアを生成することもできます。
ssh-keygen -f example
上記のコマンドは、current_example_と_example.pub_のキーペアを現在のディレクトリに生成します。
3.2. パスフレーズを追加する
また、生成されたキーペアのロックを解除するためにパスフレーズを要求できます。 パスフレーズを追加するには、_ssh-keygen_を実行し、プロンプトが表示されたらパスフレーズを入力します。
Enter passphrase (empty for no passphrase):
_ssh-keygen_は、パスフレーズの確認を求めます。 パスフレーズが一致しない場合、_ssh-keygen_はパスフレーズの入力と再確認を求めます。
3.3. アルゴリズムと長さの選択
特に指定がない限り、_ssh-keygen_は、キーペアを生成するときにhttps://searchsecurity.techtarget.com/definition/RSA[Rivest–Shamir–Adleman(RSA)]アルゴリズムを使用します。 _-t_フラグを使用して別のアルゴリズムを指定できます。 例えば:
ssh-keygen -t dsa
デフォルトでは、これにより_id_dsa_と_id_dsa.pub_のキーペアが生成されます。 一般に、生成されたペアのデフォルトのファイル名の形式は、_id_ <algorithm> _および_id_ <algorithm> .pub_になります。
_–help_フラグを指定すると、サポートされているアルゴリズムのリストを表示できます。
ssh-keygen --help
これにより、次のような出力が生成されます。
usage: ssh-keygen ... [-t dsa | ecdsa | ed25519 | rsa]
...
必要に応じて、生成されたキーの長さは、_- b_フラグを使用してバイト単位で指定することもできます。
ssh-keygen -b 4096
4. 結論
このクイックチュートリアルでは、SSHの基本と、それを使用してユーザーを認証する方法を学びました。 この理解を使用して、_ssh-keygen_コマンドを使用して、さまざまなアルゴリズムとさまざまな長さのSSHキーペアを生成できます。
その後、これらのキーペアを使用して、SSHをサポートするアプリケーションで自動的に認証できます。