You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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文件夹里;
  • 但如果你输入了testtest2这种不带完整路径的纯文件名,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\.ssh
    
    之后再运行ssh-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

火山引擎 最新活动