如果我想覆盖现有的 SSH 密钥文件而不输入 y,那么我会在 bash 中执行此操作:
echo "y" | ssh-keygen -f /home/wakatana/id_rsa -N ""
如何使用 PowerShell 实现同样的效果?我尝试过以下操作:
Write-Host "y" | ssh-keygen.exe -f C:\Users\wakatana\Desktop\id_rsa -N """"
它不会向我显示
Overwrite (y/n)?
对话框,但我不会重写现有密钥。有什么问题吗?
如果文件已经存在,只需删除该文件,然后再调用
ssh-keygen
。
盲目地向应用程序发送“是”,而不知道它首先要求什么,是非常危险的。
为什么不先
rm
现有的键?
Powershell(不是ps大师,所以根据口味调整):
Remove-Item -Path C:\Users\wakatana\Desktop\id_rsa && Remove-Item -Path C:\Users\wakatana\Desktop\id_rsa.pub && ssh-keygen.exe -f C:\Users\wakatana\Desktop\id_rsa -N """"
Linux(因为我在这里,这就是我来的目的):
rm -f path/to/.ssh/id_rsa* && ssh-keygen -b 4096 -t rsa -f path/to/.ssh/id_rsa
JIC 任何一项都会协助下一个过来。继续努力吧,开发者们 =]
编辑:我读得很好。刚刚听到 Martin Prikryl 的回答。相同的差异 - 哈!
在 Linux 上,只需使用 yes|ssh-keygen ...