无需密码的自动 ssh-keygen,如何实现?

无需密码的自动 ssh-keygen,如何实现?

我想制作一个自动脚本来调用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 ""

使用Windows 10 内置 SSH

电源外壳:

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 ''"

相关内容