174

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

4

7 回答 7

240

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

$ ssh-keygen -f id_rsa -t rsa -N ''
于 2013-02-18T22:45:10.347 回答
44

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

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

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

$sshPath = "<path>\git\bin\"

$env:path += ";$sshPath"

然后在 PoshGit 中使用它只是:

Add-SshKey "<path>\.shh\KeyFilename"
于 2013-11-02T00:15:24.530 回答
20
$ ssh-keygen -f $HOME/.ssh/id_rsa -t rsa -N ''
于 2016-10-09T01:29:53.247 回答
13

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

因此,在 OL 或 RHEL 系统上,命令将是:

$ ssh-keygen -f id_rsa -t rsa -N ''
于 2014-12-16T09:29:45.863 回答
10

关于什么 :

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.

(即openssh-clientDebian 9.4 中的 package : OpenSSH_6.7p1 Debian-5+deb8u4

于 2018-04-20T11:21:04.533 回答
0
$ printf '\n' | ssh-keygen -N ''
于 2017-08-09T04:11:32.213 回答
0

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

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

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

于 2017-08-23T14:44:20.453 回答