Как в Windows PowerShell с помощью ssh-keygen создать пару ключей SSH с закрытым ключом, не имеющим кодовой фразы (пароля), без необходимости дважды подтверждать пустую кодовую фразу и без необходимости подтверждения местоположения?
ssh-keygen -q -t ed25519 -f id_ed25519 -N ''
не работает. Он просто покажет вам обзор параметров:
option requires an argument -- N
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 -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] [-U]
[-D pkcs11_provider] [-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 ...
1 ответ
Это оно:
ssh-keygen -q -t ed25519 -f id_ed25519 -N '""'
И это также работает без «-q»:
ssh-keygen -t ed25519 -f id_ed25519 -N '""'
С этими параметрами вообще не будет запроса на нажатие Enter, пара ключей без пароля будет создана напрямую.
Вам нужно два параметра:
-N '""'
— это то, как PowerShell будет понимать параметр как пустую парольную фразу (снова одно из этих исключений Windows …). Имейте в виду, что для других командных подсказок требуется просто «» или «» (на ваше усмотрение).
И:
-f MY_FILENAME
или же
-f MY_PATH_MY_FILENAME
Значение: вы можете добавить путь к этому имени файла, иначе вы сохраните его «там, где вы находитесь». Стандартным расположением, если вы не передали этот параметр в Windows, является C:UsersAdmin.ssh
Это взято из Автоматизируйте ssh-keygen -t rsa, чтобы он не запрашивал кодовую фразу, и я повторяю это в новом вопросе для случая PowerShell, так как я не нашел решение достаточно быстро. Если вы перейдете по первым ссылкам, которые найдете в сети и на Stack Exchange, вы подумаете, что » или «» — это глобальный формат для пустого пароля, и вы, вероятно, переопределите особый случай PowerShell, даже если он упоминается где-нибудь, так как вы не ожидаете, что это будет исключением! Вот почему это исключение уже должно быть подчеркнуто в заголовке вопроса, чтобы привлечь ваше внимание.