我想制作一个自动脚本来调用ssh-keygen
并创建一些我稍后将使用的发布/私有密钥对。原则上一切都可以正常工作......
ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q
除了它要求我提供用于加密密钥的密码。目前,这使得自动化变得困难。
我可以通过命令行参数提供密码-N thepassphrase
,以防止出现提示。但我什至不想拥有钥匙 -另外通过加密保护- 并希望密钥对是明文的。
这个问题的(最佳)解决方案是什么?
据称意味着“安静/沉默”的选项-q
仍然无法避免密码交互。我还没有找到这样的东西
ssh-keygen ... -q --no-passphrase
请不要开始向我宣讲或讲授“丢失密码”的优点和缺点,我知道这一点。在交互形式(不是脚本)中,用户只需按两次 [ENTER] 即可将密钥保存为纯文本。这就是我想在这样的脚本中实现的目标:
#!/bin/bash 命令1 命令2 var=$(命令3) # 这不应该停止脚本并询问密码 ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q
答案1
这将防止出现密码提示,并将密钥对设置为以明文形式存储(当然,这会带来所有缺点和风险):
ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q -N ""
电源外壳:
ssh-keygen -b 2048 -t rsa -f C:/temp/sshkey -q -N '""'
命令:
ssh-keygen -b 2048 -t rsa -f C:/temp/sshkey -q -N ""
答案2
我发现做你想做的事情的最简单的方法是这个(使用默认文件名的示例)
< /dev/zero ssh-keygen -q -N ""
如果该~/.ssh/id_rsa
文件已存在,该命令将退出而不修改任何内容。
如果没有,您将在该文件名中获得一个全新的密钥。
不管怎样,你都没有覆盖任何东西,而且你知道最后你有一把钥匙。
答案3
这对我有用:
ssh-keygen -t rsa -f /home/oracle/.ssh/id_rsa -q -P ""
是-P
密码选项,""
是空密码。
答案4
对于另一个用户,在 Ubuntu 18.04 上测试:
sudo -u username bash -c "ssh-keygen -f ~username/.ssh/id_rsa -N ''"