ssh-keygenを使用してSSHホストキーを再生成すると、出力ディレクトリが変更されます(-fスイッチはssh-keygenが/ etc / ssh /に書き込むのを防ぎません)。

ssh-keygenを使用してSSHホストキーを再生成すると、出力ディレクトリが変更されます(-fスイッチはssh-keygenが/ etc / ssh /に書き込むのを防ぎません)。

リモートシステムで追加のsshdプロセスを開始しようとしました。使用したい新しいsshdプロファイルで作業ディレクトリを作成しました。

このディレクトリの構成ファイルを使用してsshdを実行しようとすると、ホストキーが見つからないというメッセージが表示されます。作業ディレクトリの場所を指定するスイッチを実行して欠落しているホストキーを生成しようとしましたが、ssh-keygenssh-keygen -Aは引き続き私が指定したディレクトリ-fにキーを配置しようとします。/etc/ssh//etc/sshへのアクセス権がないため失敗します。

このパスにアクセスせずにどのようにこれらのキーを生成できますか?

答え1

この-Aオプションはssh-keygen世代を伝えます。ホストキー。マニュアルページによると、その用途ssh-keygenは次のとおりです。

一般に、公開鍵認証でSSHを使用したい各ユーザーは、このコマンドを1回実行するか、またはから
認証鍵を生成します。 ~/.ssh/identity
~/.ssh/id_ecdsa~/.ssh/id_dsa~/.ssh/id_rsaまた、システム管理者がホストキーを生成するために使用できます。

概要には、-A他のオプションなしで1行だけが一覧表示されます。

SYNOPSIS
     ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment]
                [-f output_keyfile]
     ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
     ssh-keygen -i [-m key_format] [-f input_keyfile]
     ssh-keygen -e [-m key_format] [-f input_keyfile]
     ssh-keygen -y [-f input_keyfile]
     ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]
     ssh-keygen -l [-f input_keyfile]
     ssh-keygen -B [-f input_keyfile]
     ssh-keygen -D pkcs11
     ssh-keygen -F hostname [-f known_hosts_file] [-l]
     ssh-keygen -H [-f known_hosts_file]
     ssh-keygen -R hostname [-f known_hosts_file]
     ssh-keygen -r hostname [-f input_keyfile] [-g]
     ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point]
     ssh-keygen -T output_file -f input_file [-v] [-a num_trials] [-K checkpt]
                [-W generator]
     ssh-keygen -s ca_key -I certificate_identity [-h] [-n principals]
                [-O option] [-V validity_interval] [-z serial_number] file ...
     ssh-keygen -L [-f input_keyfile]
     ssh-keygen -A

したがって、(ソースコードを修正して直接コンパイルすることに加えて)あなたが要求することは意図された用途ではありません。

追加資料:

答え2

Thomasがリンクしたマニュアルページによると、-fファイルssh-keygen -Aプレフィックスをサポートして指定するので、この機能が追加されたようです。

-A

rsaすべての主キータイプ(、、および)ecdsaのホストキーがed25519まだない場合に生成します。ホストキーは、主キーファイルパス、空のパスワード、キータイプの基本ビット、および基本記述を使用して生成されます。また、指定した場合、-fその引数は生成されたホストキーファイルのデフォルトパスへの接頭辞として使用されます。これは/etc/rc新しいホストキーを生成するために使用されます。

ノートこれらのフォルダは、実行する前にetc/ssh出力フォルダの下にある必要があります。ssh-keygen

$ mkdir -p output/etc/ssh

$ ssh-keygen -A -f output
ssh-keygen: generating new host keys: RSA ECDSA ED25519

$ ls output/etc/ssh/
ssh_host_ecdsa_key  ssh_host_ecdsa_key.pub  ssh_host_ed25519_key  ssh_host_ed25519_key.pub  ssh_host_rsa_key  ssh_host_rsa_key.pub

答え3

Dockerにアクセスできる場合は、コンテナの外側に新しい永続ホストキーを生成するために次のものを使用しました。

docker run -d --name get_host_keys lscr.io/linuxserver/openssh-server:latest
sleep 5
docker cp get_host_keys:/etc/ssh/. .
rm *config*
docker stop get_host_keys
docker rm get_host_keys

関連情報