【问题标题】:Automate ssh-keygen -t rsa so it does not ask for a passphrase自动化 ssh-keygen -t rsa 所以它不要求输入密码
【发布时间】:2012-06-01 19:23:17
【问题描述】:

我需要在没有密码的情况下自动化ssh-keygen -t rsa,即在提示符处输入。
我怎样才能从 shell 脚本中做到这一点?

【问题讨论】:

    标签: ssh-keys


    【解决方案1】:

    要在不提示输入密码的情况下生成 SSH 密钥对,您可以执行以下操作:

    $ ssh-keygen -f id_rsa -t rsa -N ''
    

    【讨论】:

    • 为我工作! Github 总是在没有 -N 选项的情况下要求输入密码,即使在提示“输入密码(没有密码时为空)”之后没有输入密码
    • 在 RHEL 6 上,我收到此错误:“ssh-keygen: option requires an argument -- N”:(
    • OK这是因为我在它前面使用了dzdo命令,所以我不得不写:dzdo -i -u target_user ssh-keygen -f id_rsa -t rsa -N "''"
    • 看来分隔选项和空密码短语-N '' 的空间很重要。当我添加空间时它成功了!
    【解决方案2】:

    如果您需要在 Windows 中通过 PowerShell 执行此操作,请使用:

    ssh-keygen -f $Name -t rsa -N '""'
    

    请注意,您还必须确保 git bin 目录在您的路径中:

    $sshPath = "<path>\git\bin\"
    
    $env:path += ";$sshPath"
    

    然后在 PoshGit 中使用它只是:

    Add-SshKey "<path>\.shh\KeyFilename"
    

    【讨论】:

    • 谢谢。顺便说一句,git\usr\bin 是正确的目录。
    • 这对我不起作用。我收到错误“保存密钥“mykey”失败:密码太短(至少四个字符)”。我不得不切换双引号/单引号,例如ssh-keygen -f $Name -t rsq -N '""'.
    • @AaronJensen 对我来说也一样。感谢您的修复。我用'""'
    • @AaronJensen 谢谢! '""' 是唯一对我有用的变体。
    • @Daniel-Little 我找不到 PoshGit 模块,我找到的唯一一个具有此名称的模块是 posh-git,它似乎没有此 cmdlet。还有更多相关信息吗?
    【解决方案3】:
    $ ssh-keygen -f $HOME/.ssh/id_rsa -t rsa -N ''
    

    【讨论】:

    • 这个答案本质上是从 Shamoon 的答案中复制和粘贴
    • @oᴉɹǝɥɔ Shamoon 的回答没有明确指定私钥的路径。
    【解决方案4】:

    只是对答案 2 的更正... 我在我的 OL 和 RHEL 系统上发现文件名应该是 id_rsa 而不是 id.rsa。

    所以在 OL 或 RHEL 系统上,命令将是:

    $ ssh-keygen -f id_rsa -t rsa -N ''
    

    【讨论】:

    • 据我了解,id_rsa 是 RSA 密钥的默认文件名,因此如果您想坚持默认设置,您不必显式使用 -f 选项。
    • @danidemi 虽然你说得对,它是默认设置,但指定 -f 选项的一个原因是你可以在脚本中执行它。您只需重新确认默认即可禁用后续提示。
    【解决方案5】:

    怎么样:

    ssh-keygen -q -t rsa -f ~/.ssh/id_rsa -N ''
    

    man ssh-keygen 中所述:

    SYNOPSIS
         ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa | rsa1] [-N new_passphrase] [-C comment] [-f output_keyfile]
    (...)
          -q      Silence ssh-keygen.
    

    (即在 Debian 9.4 中使用 openssh-client 软件包:OpenSSH_6.7p1 Debian-5+deb8u4

    【讨论】:

    • 为我工作谢谢。 (OpenSSH_7.6p1 Ubuntu-4ubuntu0.2)
    • ssh-keygen -q -t ed25519 -f id_ed25519 -N '' 对我不起作用,Windows 10 Home 上处于管理员模式的 Windows PowerShell。我只能用ssh-keygen -t ed25519 -f id_ed25519 运行它,它会问我Enter passphrase (empty for no passphrase): 两次。我怎样才能避免必须按任何输入按钮?
    【解决方案6】:

    我需要在 bash 脚本中自动执行 ssh-keygen 命令和对我来说效果很好的最终答案:

    echo -e "\n" | ssh-keygen -N "" &> /dev/null
    

    带有 -e 的 echo 命令将“\n”解释为 Enter 键,但不适用于密码短语。然后使用选项 -N "" (空密码),密码将为空,不会要求任何东西。 &> /dev/null 会将“stdout”和“stderr”发送到/dev/null,因此不会通过显示器打印任何内容。

    【讨论】:

      【解决方案7】:
      $ printf '\n' | ssh-keygen -N ''
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-15
        • 2021-03-29
        • 1970-01-01
        • 2013-09-30
        • 2012-04-02
        • 2013-03-17
        相关资源
        最近更新 更多