助け合いフォーラム

LPIC

LPIC Lv1-102(Ver5.0)
問題ID : 5155
問題を開く
リモートホストからサーバにSSH接続できるように、サーバ上で以下のコマンドを使用して公開鍵認証用の鍵ペアを作成した。SSH接続するホスト(クライアント)に安全に持ち運ぶべきファイルはどれか。 $ ssh-keygen -t dsa

この問題はプレミアムコンテンツです。

上に戻る

SSHサーバの秘密鍵と公開鍵の作り方

投稿日 2023/03/14

$ 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」はどのようにして生成するのか、また何故生成することになるのかを知りたいです。

2023/03/15 13:53

以下の記事で丁寧に説明されています。
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以下に配置されている、ということですね…!! すっきりしました。丁寧に教えてくださりありがとうございます!!

この返信に対して
コメントを記入できます

この投稿に対して返信しませんか?