助け合いフォーラム
この問題はプレミアムコンテンツです。
SSHサーバの秘密鍵と公開鍵の作り方
$ ssh-keygen -t dsa
を実行すると「/.ssh/id_dsa」「/.ssh/id_dsa.pub」の2つが生成されることは理解しているのですが、それがクライアント側でもサーバー側でも同じ結果になることが理解できずに困っています。
クライアント側で「$ ssh-keygen -t dsa」→「/.ssh/id_dsa」「/.ssh/id_dsa.pub」
サーバー側で「$ ssh-keygen -t dsa」→「ssh_host_dsa_key」「ssh_host_dsa_key.pub」
だと誤認していたのですが、では表にあるような「ssh_host_dsa_key」はどのようにして生成するのか、また何故生成することになるのかを知りたいです。
以下の記事で丁寧に説明されています。
OpenSSHの認証に証明書を使う方法
サーバやクライアントはあくまでモデルの話であるため、どのLinuxコンピュータ上でもssh-keygenコマンドは同じ動作をします。
~/.ssh/以下に作成されるのはユーザ認証用の公開鍵と秘密鍵です。
/etc/ssh/以下に作成されるのはホスト認証用の公開鍵と秘密鍵です。
ssh-keygenコマンドは、ユーザ認証用の公開鍵と秘密鍵を作成するコマンドです。
鍵の名前、鍵長、アルゴリズムはオプションや対話環境で指定することができますが、何も指定しない場合は以下の内容で鍵が作成されます。
- アルゴリズム: RSA
- 鍵長: 2048ビット
- パスフレーズ: なし
- 公開鍵のパス: ~/.ssh/id_rsa.pub
- 秘密鍵のパス: ~/.ssh/id_rsa
ユーザ認証用の公開鍵と秘密鍵はssh-keygenコマンドで手動で作成する必要があります。
一方で、ホスト認証用の公開鍵と秘密鍵は予め/etc/ssh/以下に配置されています。
先ほど提示した記事によると、OpenSSHをデーモンとして起動する際に自動で作成されるようです。
私のUbuntuの環境だと、/etc/ssh/
の内容は以下の通りでした。
ubuntu@ubuntu:~$ ls /etc/ssh
moduli ssh_config.d ssh_host_dsa_key.pub ssh_host_ecdsa_key.pub ssh_host_ed25519_key.pub ssh_host_rsa_key.pub sshd_config
ssh_config ssh_host_dsa_key ssh_host_ecdsa_key ssh_host_ed25519_key ssh_host_rsa_key ssh_import_id sshd_config.d
コメント
この投稿に対して返信しませんか?
k kajiniwa
2023/03/16 22:03
ホスト認証用は起動時に自動で作成されて、/etc/ssh以下に配置されている、ということですね…!! すっきりしました。丁寧に教えてくださりありがとうございます!!