ssh-keygen不读取标准输入获取加密密码的问题求助(含ssh-askpass相关疑问)
ssh-keygen不读取标准输入获取加密密码的问题求助(含ssh-askpass相关疑问)
我现在在无头服务器上用OpenSSH v8.9版本的ssh-keygen做密钥生成的自动化操作。如果不需要设置密码的话这事特别简单,但要给私钥加密码就头疼了。生成新密钥时,ssh-keygen需要从标准输入读取三个内容:一是当目标密钥文件已经存在时,输入y确认覆盖;二是要设置的密码;三是重复输入一次密码确认。
我简化了操作流程,用下面的命令来尝试实现自动化:
$ printf -v input "y\npassword\npassword\n" $ echo -n "$input" y password password $ echo -n "$input" | ssh-keygen -t ed25519 -a100 -f tmpkey
第一次运行的时候,我得到了这样的输出:
Generating public/private ed25519 key pair.
tmpkey already exists.
Overwrite (y/n)? ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory
密钥对确实生成了,但尴尬的是私钥并没有被加密。
后来我在带X环境的测试系统上安装了ssh-askpass,现在再运行ssh-keygen时,会弹出OpenSSH的认证弹窗,而且我通过管道传入的标准输入完全被忽略了。这显然不是我想要的结果——我本来就是要在无头环境下自动化完成整个流程,根本不需要弹窗交互啊!
备注:内容来源于stack exchange,提问作者QF0
相关产品推荐
相关产品推荐

