在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 案例,即使它在某处被提及,因为您不希望它是一个例外!这就是为什么这个例外应该在问题标题中强调以引起您的注意。