【发布时间】:2012-06-01 19:23:17
【问题描述】:
我需要在没有密码的情况下自动化ssh-keygen -t rsa,即在提示符处输入。
我怎样才能从 shell 脚本中做到这一点?
【问题讨论】:
标签: ssh-keys
我需要在没有密码的情况下自动化ssh-keygen -t rsa,即在提示符处输入。
我怎样才能从 shell 脚本中做到这一点?
【问题讨论】:
标签: ssh-keys
要在不提示输入密码的情况下生成 SSH 密钥对,您可以执行以下操作:
$ ssh-keygen -f id_rsa -t rsa -N ''
【讨论】:
ssh-keygen: option requires an argument -- N”:(
dzdo命令,所以我不得不写:dzdo -i -u target_user ssh-keygen -f id_rsa -t rsa -N "''"
-N '' 的空间很重要。当我添加空间时它成功了!
如果您需要在 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 是正确的目录。
ssh-keygen -f $Name -t rsq -N '""'.
'""'
'""' 是唯一对我有用的变体。
$ ssh-keygen -f $HOME/.ssh/id_rsa -t rsa -N ''
【讨论】:
只是对答案 2 的更正... 我在我的 OL 和 RHEL 系统上发现文件名应该是 id_rsa 而不是 id.rsa。
所以在 OL 或 RHEL 系统上,命令将是:
$ ssh-keygen -f id_rsa -t rsa -N ''
【讨论】:
id_rsa 是 RSA 密钥的默认文件名,因此如果您想坚持默认设置,您不必显式使用 -f 选项。
-f 选项的一个原因是你可以在脚本中执行它。您只需重新确认默认即可禁用后续提示。
怎么样:
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)
【讨论】:
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): 两次。我怎样才能避免必须按任何输入按钮?
我需要在 bash 脚本中自动执行 ssh-keygen 命令和对我来说效果很好的最终答案:
echo -e "\n" | ssh-keygen -N "" &> /dev/null
带有 -e 的 echo 命令将“\n”解释为 Enter 键,但不适用于密码短语。然后使用选项 -N "" (空密码),密码将为空,不会要求任何东西。 &> /dev/null 会将“stdout”和“stderr”发送到/dev/null,因此不会通过显示器打印任何内容。
【讨论】:
$ printf '\n' | ssh-keygen -N ''
【讨论】: