自动化ssh-keygen -t rsa,因此它不要求输入密码


164

我需要自动ssh-keygen -t rsa输入密码,即在提示符下输入。
如何从shell脚本中做到这一点?

Answers:


230

要生成SSH密钥对而不提示您输入密码短语,可以执行以下操作:

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

2
为我工作!即使在提示“输入密码(无密码输入为空)”后未输入密码,Github始终要求输入不带-N选项的密码
Hollerweger 2015年

4
在RHEL 6上,我收到此错误:“ ssh-keygen: option requires an argument -- N” :(
Anthony O.

1
好的,这是因为我在dzdo命令前面使用了命令,所以我不得不写:dzdo -i -u target_user ssh-keygen -f id_rsa -t rsa -N "''"
Anthony O.

1
看来,选项和空密码短语之间的间隔-N ''很大。当我添加空间时,它成功了!
GH05T

33

如果您需要在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是正确的目录。
majkinetor

4
这对我不起作用。我收到一个错误“保存密钥“ mykey”失败:密码短语太短(至少四个字符)”。我必须切换双/单引号,例如ssh-keygen -f $Name -t rsq -N '""'
亚伦·詹森

1
@AaronJensen对我也一样。感谢您的修复。我用过'""'
Trevor Sullivan '18

@AaronJensen谢谢!'""'是对我有用的唯一变体。
Somnium

@ Daniel-Little我找不到一个模块PoshGit,我找到的唯一使用此名称的模块是posh-git,它似乎没有此cmdlet。还有更多信息吗?
Jim

18
$ ssh-keygen -f $HOME/.ssh/id_rsa -t rsa -N ''

这个答案基本上是复制和粘贴由Shamoon答案
oᴉɹǝɥɔ

@oᴉɹǝɥɔShamoon的答案未明确指定私钥的路径。
GMaster

11

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

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

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

2
据我了解,这id_rsa是RSA密钥的默认文件名,因此,如果您希望使用默认值,则不必强制使用该-f选项。
danidemi

3
@danidemi是正确的,尽管它是默认值,但指定该-f选项的原因之一是您可以在脚本中执行此操作。您只需重申默认设置即可禁用后续提示。
特里斯坦·里德

9

关于什么 :

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-client包Debian中9.4拉伸:OpenSSH_6.7p1 Debian-5+deb8u4


为我工作谢谢。(OpenSSH_7.6p1 Ubuntu-4ubuntu0.2)
David Webster,

0

我需要在一个bash脚本中自动执行ssh-keygen命令和最适合我的最终答案:

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

带有-e的echo命令将“ \ n”解释为Enter键,但不能与密码短语一起使用。然后,使用选项-N“”(空密码),密码将为空,并且不会要求输入任何内容。&> / dev / null将把'stdout'和'stderr'发送到/ dev / null,因此不会在显示屏上打印任何内容。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.