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

Tam*_*mpa 154 ssh-keys

我需要使用密码自动化ssh-keygen -t rsa,即输入提示符.我怎样才能从shell脚本中做到这一点?

谢谢

Sha*_*oon 221

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

$ ssh-keygen -f id_rsa -t rsa -N ''
Run Code Online (Sandbox Code Playgroud)

  • 在RHEL 6上,我收到了这个错误:"`ssh-keygen:option需要一个参数 - N`":( (4认同)
  • 为我工作!Github总是要求输入一个没有-N选项的密码,即使在未输入密码后输入密码"输入密码短语(没有密码短语为空)" (2认同)

Dan*_*tle 25

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

ssh-keygen -f $Name -t rsa -N '""'
Run Code Online (Sandbox Code Playgroud)

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

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

$env:path += ";$sshPath"
Run Code Online (Sandbox Code Playgroud)

然后在PoshGit中使用它只是:

Add-SshKey "<path>\.shh\KeyFilename"
Run Code Online (Sandbox Code Playgroud)

  • 这对我不起作用.我收到错误"保存密钥"mykey"失败:密码太短(最少四个字符)".我不得不切换双/单引号,例如`ssh-keygen -f $ Name -t rsq -N'""'`. (3认同)

GMa*_*ter 18

$ ssh-keygen -f $HOME/.ssh/id_rsa -t rsa -N ''
Run Code Online (Sandbox Code Playgroud)

  • @oᴉɹǝɥɔ Shamoon 的回答没有明确指定私钥的路径。 (2认同)

小智 11

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

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

$ ssh-keygen -f id_rsa -t rsa -N ''
Run Code Online (Sandbox Code Playgroud)

  • @danidemi虽然你是对的,但它是默认的,指定`-f`选项的一个原因是你可以在脚本中执行它.您可以重新确认默认值以禁用后续提示. (3认同)
  • 据我所知,`id_rsa`是RSA密钥的默认文件名,因此如果你想坚持默认,你不必强制显式使用`-f`选项. (2认同)

小智 9

关于什么 :

ssh-keygen -q -t rsa -f ~/.ssh/id_rsa -N ''
Run Code Online (Sandbox Code Playgroud)

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.
Run Code Online (Sandbox Code Playgroud)

(即与openssh-client包Debian中9.4拉伸:OpenSSH_6.7p1 Debian-5+deb8u4)