Windows 11 OpenSSH生成SSH密钥路径异常问题求助
Windows 11 OpenSSH生成SSH密钥路径异常问题求助
嘿,这个问题我之前也踩过坑,其实是对ssh-keygen的路径提示逻辑有点误解啦~
问题原因分析
你看到的Enter file in which to save the key (C:\Users\XXX/.ssh/id_rsa):这个提示里,括号里的路径只是官方推荐的默认保存路径,但它的实际行为是:
- 如果你直接按回车不输入内容,才会自动使用这个默认路径,把密钥存在用户目录下的
.ssh文件夹里; - 但如果你输入了
test、test2这种不带完整路径的纯文件名,ssh-keygen就会把文件直接保存在当前PowerShell所在的工作目录里——也就是你第一个测试里的C:\Windows\system32,第二个测试里的C:\Users\XXX。
你自己发现的“生成路径就是当前所在文件夹”的规律,完全符合工具的设计逻辑,只是你误以为输入文件名会自动关联到默认的.ssh路径而已。
实用解决办法
这里给你几个靠谱的解决方式:
- 直接用默认路径(最省心):执行
ssh-keygen后,当提示输入保存路径时,什么都不用输直接按回车,密钥就会自动存到C:\Users\XXX\.ssh\id_rsa(对应公钥id_rsa.pub); - 指定完整路径保存自定义文件名:如果想自定义密钥文件名,同时存在
.ssh文件夹里,输入完整路径就行,比如:
这样不管你在哪个目录运行命令,文件都会乖乖存到Enter file in which to save the key (C:\Users\XXX/.ssh/id_rsa): C:\Users\XXX\.ssh\my_custom_key.ssh文件夹里; - 先切换到
.ssh目录再操作:先执行命令切换到目标文件夹:
之后再运行cd C:\Users\XXX\.sshssh-keygen,这时候输入自定义文件名(比如test3),文件就会直接保存在.ssh文件夹里,不用再输完整路径了。
对照你的测试案例验证
再看你自己的测试过程:
PS C:\Windows\system32> ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\XXX/.ssh/id_rsa): test
...
Your identification has been saved in test
因为当前工作目录是system32,输入test后文件就存在了这里;而第二个测试:
PS C:\Users\XXX> ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\XXX/.ssh/id_rsa): test2
...
Your identification has been saved in test2
当前目录是用户主目录,所以test2就存在了这里,完全符合上面的逻辑~
备注:内容来源于stack exchange,提问作者Nogi




