【问题标题】:Automating "enter" keypresses for bash script generating ssh keys为生成 ssh 密钥的 bash 脚本自动“输入”按键
【发布时间】:2010-09-07 14:31:14
【问题描述】:

我想创建一个脚本,它只运行ssh-keygen -t rsa。但是怎么传给它3次进入呢?

【问题讨论】:

    标签: bash


    【解决方案1】:

    试试:

    ssh-keygen -t rsa -N "" -f my.key
    

    -N "" 告诉它使用空密码(与交互式脚本中的两个输入相同)

    -f my.key 告诉它将密钥存储到my.key(根据需要更改)。

    整个过程无需您提供任何输入键即可运行 :)

    将输入发送到交互式脚本:

    echo -e "\n\n\n" | ssh-keygen -t rsa
    

    【讨论】:

    • 这是正确的答案,但我仍然想知道如何按回车键不止一次 - 在另一个脚本中。
    • 当然 - 更新了答案以包括如何将换行符发送到脚本。
    • echo -e "\n\n\n" | sshkeygen -t rsa 对我不起作用,您可以自己尝试一下吗?它只通过第一次进入。但在其他简单的脚本上它可以工作。
    • 我在发布之前对其进行了测试 - 它工作正常,虽然看起来来自 ssh-keygen 的破折号被删除了 - 你把它添加回来了吗? {edited} 另外 - 您不能多次运行脚本 - 它会更改问题以确认您要覆盖现有的 _rsa 密钥文件(因此需要提供 y 或 n)
    • 我建议使用yes "" 而不是echo -e "\n\n\n"yes 在无穷大中输出给定的任何参数[或默认为“y”] - 非常适合那些只想对程序可能提示的任何内容提供“是”答案)。 yes 更短,如果 ssh-keygen 添加问题,也会自动回答。 :)
    【解决方案2】:

    带有密码的版本是:

    $ ssh-keygen -t rsa -b 4096 -C "comment" -P "examplePassphrase" -f "desired pathAndName" -q 
    
    • -q 表示静音

    来源是http://linux.die.net/man/1/ssh-keygen

    【讨论】:

    • 现有密码使用-P,新密码使用-N
    【解决方案3】:

    同意Michel Marro,除了它需要更多: 如果文件已经存在,它仍然会交互询问是否必须覆盖它。

    使用这个question的答案。

    yes y | ssh-keygen -q -t rsa -N '' >/dev/null
    

    需要重定向到 null 以使覆盖消息静音。

    【讨论】:

      【解决方案4】:
      echo -e "\n"|ssh-keygen -t rsa -N ""
      

      【讨论】:

      • 嗯?这实际上比您声称不起作用的答案之一具有 更少 换行符(这是在echo -e 发出除-e 之外的其他东西的平台子集上,这并非无处不在@ 987654324@可用)。
      • ...要清楚,我在生产环境中使用ssh-keygen -N '' 作为自动安装过程的一部分,它根本不读取标准输入,因此不需要echoany echo 变体)通过管道输入。 (当然,在我的生产用例中,我相信 stdin 已连接到 /dev/null;当它连接到 TTY 时可能会有不同的行为,但更好的答案是 </dev/null 而不是 echo ... |
      • 它提示我输入文件名:$ ssh-keygen -t rsa -N '' Generating public/private rsa key pair. Enter file in which to save the key (/home/dlyons/.ssh/id_rsa):
      【解决方案5】:

      为了安全和性能,建议使用ed25519

      yes "y" | ssh-keygen -o -a 100 -t ed25519 -C "Bla Bla" -f /mypath/bla -N ""
      

      这里

      -o OpenSSH 密钥格式而不是旧 PEM(需要 OpenSSH 6.5+)

      -a 筛选 DH-GEX 候选人时的素性测试次数

      -t 密钥类型(ed25519、RSA、DSA 等)

      -f /mypath/bla输出文件路径和名称

      -N ""使用空密码

      yes "y" 没有互动。

      会生成两个文件

      /mypath/bla
      /mypath/bla.pub
      

      bla 文件是私有的,bla.pub 是公开的。

      【讨论】:

        猜你喜欢
        • 2013-04-14
        • 2017-07-05
        • 2014-07-07
        • 2012-08-25
        • 1970-01-01
        • 2017-08-09
        相关资源
        最近更新 更多