助け合いフォーラム
この問題はプレミアムコンテンツです。
クライアントに渡す秘密鍵に関して
ping-t内で「SSHに関する主なファイル」として下記の表がありました。
この表の内容を前提に質問です。
ーーーーーーーーーーーーーーーーーーーー
SSHクライアント SSHサーバ (sshd)
設定ファイル /etc/ssh/ssh_config /etc/ssh/sshd_config
秘密鍵 ~/.ssh/id_rsa /etc/ssh/ssh_host_rsa_key
公開鍵 ~/.ssh/id_rsa.pub /etc/ssh/ssh_host_rsa_key.pub
認証鍵リスト ~/.ssh/known_hosts /.ssh/authorized_keys
ーーーーーーーーーーーーーーーーーーーー
<質問>
今回の問題は「サーバ上でssh-keygenをして、作成したサーバの秘密鍵をクライアントに送る」と認識しているので、
そもそもクライアントに送るファイルとしては、サーバ上にある秘密鍵である「/etc/ssh/ssh_host_rsa_key」をクライアントに送るのではないのでしょうか?「/etc/ssh/ssh_host_rsa_key」をクライアントに送って、それをクライアント上の「/.ssh/id_rsa」に格納するのではないのでしょうか?今回の設問だと、「~/.ssh/id_ecdsa」を送るのではなく「/etc/ssh/ssh_host_ecdsa_key」を送ると思いました。
ssh-keygenでホスト認証用の鍵かユーザ認証用の鍵かを指定するオプションは無く、サーバとクライアントどちらでコマンドを打ったかで、鍵が格納されるディレクトリが変わると思っているのですが、認識合ってますでしょうか?
以上、よろしくお願いいたします。
今回の問題は「サーバ上でssh-keygenをして、作成したサーバの秘密鍵をクライアントに送る」と認識しているので、
ここがちょっと違うんじゃないかなと思います。
まず、設問の通りにコマンドを打つと、「サーバの秘密鍵」ではなくユーザーの鍵を生成するようになるんですよね。
$ ssh-keygen -t ecdsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_ecdsa):
この時点で、「サーバの秘密鍵」を生成しようという意図ではないと読めます。また、ホスト鍵はそもそも自動で生成されますし、手動で作成する場合でも -A を指定するかと思いますので、今回のコマンドラインでは「ホスト鍵」と判断すべき理由はないかと思います。
https://man7.org/linux/man-pages/man1/ssh-keygen.1.html
-A **Generate host keys** of all default key types (rsa, ecdsa, and ed25519) if they do not already exist. The host keys are generated with the default key file path, an empty passphrase, default bits for the key type, and default comment. If -f has also been specified, its argument is used as a prefix to the default path for the resulting host key files. This is used by /etc/rc to generate new host keys.
何より、「サーバの秘密鍵」をクライアントに送る理由はありません。参考の「ホスト認証」の部分を再度ご確認いただくのが良いかなと思います。
コメント
この投稿に対して返信しませんか?