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

问题描述 投票:151回答:7

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

ssh-keys
7个回答
217
投票

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

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

24
投票

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

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

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

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

$env:path += ";$sshPath"

然后在PoshGit中使用它只是:

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

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

11
投票

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

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

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

8
投票

关于什么 :

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


0
投票

我需要在bash脚本中自动执行ssh-keygen命令以及对我有用的最终答案:

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

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


0
投票
$ printf '\n' | ssh-keygen -N ''
© www.soinside.com 2019 - 2024. All rights reserved.