Что именно делает `ssh-keygen -A`?
$ ssh-keygen --help
ssh-keygen: unrecognized option: -
usage: ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa]
[-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 [-v] [-E fingerprint_hash] [-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 rounds] [-J num_lines]
[-j start_line] [-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
ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]
file ...
ssh-keygen -Q -f krl_file file ...
Вы можете заметить, что ssh-keygen -A
явно отсутствует документация
$ ssh-keygen -A
ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519
Кажется, он генерирует (A) все файлы ключей, но я не вижу никаких ключей в /root/.ssh/
, Просто чтобы подтвердить, я побежал ssh-keygen
без параметров, введенные через все запросы, и у меня были ключи, как и ожидалось.
Итак, вопрос в том, что именно происходит?
3 ответа
Это задокументировано в ssh-keygen
руководство:
-A
Для каждого из типов ключей (rsa1, rsa, dsa, ecdsa и ed25519), для которых ключи хоста не существуют, создайте ключи хоста с использованием пути к файлу ключа по умолчанию, пустой парольной фразы, битов по умолчанию для типа ключа и комментария по умолчанию, Это используется сценариями системного администрирования для генерации новых ключей хоста.
Итак, если в вашей системе еще нет ключей хоста, ssh-keygen -A
создам их. Воссоздание ключей хоста заставит вашего SSH-клиента жаловаться на то, что отпечаток ключа для хоста изменился при следующем подключении к машине, и...
Are you sure you want to continue connecting (yes/no)?
(при условии, что вы ранее успешно подключились к машине с SSH)
Я подозреваю, что часть задаваемого вопроса - где ssh-keygen -A хранит результат, вопрос, который я пытался задать себе, и думаю, что я ответил.
Вы можете довольно быстро увидеть, где хранятся результаты в вашей системе, выполнив команду "ssh-keygen -A" от имени обычного пользователя (НЕ ROOT): тогда разрешения не позволят вам переписать что-либо:
user> ssh-keygen -A
ssh-keygen: generating new host keys: RSA1 open /etc/ssh/ssh_host_key failed: Permission denied.
Saving the key failed: /etc/ssh/ssh_host_key.
ssh-keygen: generating new host keys: ED25519 open /etc/ssh/ssh_host_ed25519_key failed: Permission denied.
Saving the key failed: /etc/ssh/ssh_host_ed25519_key.
показывая, что системные ключи хранятся в /etc/ssh. Это настраивается через файл sshd_config:
user> grep etc/ssh /etc/ssh/sshd_config
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
Из того, что я прочитал, -A
опция генерирует (A)ll ключи хоста по умолчанию.
Ключ хоста - это криптографический ключ, используемый для аутентификации компьютеров в протоколе SSH. Вот отличное объяснение от ssh.com
Когда я нажал войти через ssh-keygen
подсказки, ключ был сгенерирован в ~/.ssh/
папки; как я и ожидал. Однако при запуске ssh-keygen -A
Я не вижу никаких дополнительных клавиш в ~/.ssh/
,
После прочтения поста с ssh.com, я обнаружил недавно отчеканенные ключи, сидящие в /etc/ssh/
,
ОБНОВИТЬ:
Ознакомьтесь с документацией объяснения hellhell.com/ explain?cmd=ssh-keygen+-A в соответствии с рекомендациями @Biffen в комментариях к исходному вопросу!