Windows PowerShell 中的非交互式 ssh-keygen:创建密钥对并避免按 Enter 键输入位置和空密码

Windows PowerShell 中的非交互式 ssh-keygen:创建密钥对并避免按 Enter 键输入位置和空密码

在Windows PowerShell中,使用ssh-keygen,如何创建没有密码(password)的私钥的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 '""'

有了这些参数,就根本不会提示按回车键了,直接创建无密码的密钥对。

您需要两个参数:

-N '""'

PowerShell 将参数理解为空密码的方式(再次是这些 Windows 例外之一……)。请注意,其他命令提示符只需要''或“”(由您决定)。

和:

-f MY_FILENAME

或者

-f MY_PATH_MY_FILENAME

意思是:你可以添加文件名的路径,否则你将保存它“在你所在的位置”。如果你没有在 Windows 上传递该参数,则标准位置是C:\Users\Admin\.ssh\

这取自自动化 ssh-keygen -t rsa,这样它就不会要求输入密码,而我在 PowerShell 案例的新问题中重复了这一点,因为我没有足够快地找到解决方案。如果您点击在网络上和 Stack Exchange 上找到的第一个链接,您会认为 '' 或 "" 是空密码的全局格式,并且您可能会过度阅读非常特殊的 PowerShell 案例,即使它在某处被提及,因为您不希望它是一个例外!这就是为什么这个例外应该在问题标题中强调以引起您的注意。

相关内容