Изменение выходного каталога при повторном создании ключей хоста SSH с помощью ssh-keygen (ключ -f не мешает ssh-keygen записывать данные в /etc/ssh/)

Изменение выходного каталога при повторном создании ключей хоста SSH с помощью ssh-keygen (ключ -f не мешает ssh-keygen записывать данные в /etc/ssh/)

Я пытаюсь запустить дополнительный процесс sshd на удаленной машине. Я создал рабочий каталог с новым файлом конфигурации sshd, который я хотел бы использовать.

Когда я пытаюсь запустить sshd, используя файл конфигурации в этом каталоге, он жалуется, что не может найти никаких ключей хоста. Я пытался создать отсутствующие ключи хоста, запустив ssh-keygen -Aс -fпереключателем, чтобы указать расположение моего рабочего каталога, но ssh-keygen продолжает пытаться поместить ключи /etc/ssh/вместо указанного мной каталога. У меня нет доступа к /etc/ssh, поэтому он терпит неудачу.

Как я могу сгенерировать эти ключи, не имея доступа к этому пути?

решение1

Опция -Aговорит ssh-keygenсгенерироватьключи хоста. Согласно странице руководства, предполагаемое использование ssh-keygen-

Обычно каждый пользователь, желающий использовать SSH с аутентификацией по открытому ключу, запускает
эту функцию один раз, чтобы создать ключ аутентификации в ~/.ssh/identity,
~/.ssh/id_ecdsa, ~/.ssh/id_dsaили ~/.ssh/id_rsa. Кроме того, системный администратор может использовать это для генерации ключей хоста.

В синопсисе перечислены -Aв отдельной строке, без каких-либо других вариантов:

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

Согласно странице руководства, на которую ссылается Томас, -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

Связанный контент