自动“输入”按键,bash脚本生成ssh按键


101

我想创建只运行的脚本ssh-keygen -t rsa。但是如何传递给它三遍呢?

Answers:


217

尝试:

ssh-keygen -t rsa -N "" -f my.key

-N "" 告诉它使用空密码短语(与交互式脚本中的两个回车相同)

-f my.key 告诉它将密钥存储到 my.key(根据您的需要更改)。

整个过程无需您提供任何Enter键即可:)

要将Enter发送到交互式脚本:

echo -e "\n\n\n" | ssh-keygen -t rsa

4
这是正确的答案,但我仍然想知道如何在一个脚本中再按一次Enter。
Sławosz

3
肯定-更新了答案,包括如何向脚本发送换行符。
Rudu 2010年

2
echo -e“ \ n \ n \ n” | sshkeygen -t rsa对我不起作用,您可以自己尝试吗?它仅通过第一次进入。但在其他简单脚本上,它可以工作。
Sławosz

1
我在发布它之前对其进行了测试-尽管看起来像破折号一样,它仍然可以正常工作ssh-keygen-您是否将其重新添加了?{edited}另外-您不能多次运行该脚本-它更改了问题以确认您要覆盖现有的_rsa密钥文件(因此需要提供ay或n)
Rudu 2010年

13
我建议使用yes ""而不是echo -e "\n\n\n"yes输出无穷大的参数(默认情况下,默认为“ y”)输出–对于那些只想对程序可能提示的情况提供“是”答案的情况是完美的)。yes较短,应该ssh-keygen添加一个问题,该问题也会自动回答。:)
zrajm 2015年


1

同意米歇尔·马罗Michel Marro)但还需要更多:如果文件已经存在,它将仍然是交互式的,询问是否必须覆盖它。

使用这个问题的答案。

yes y | ssh-keygen -q -t rsa -N '' >/dev/null

必须重定向到null才能使覆盖消息静音。


0
echo -e "\n"|ssh-keygen -t rsa -N ""

h?实际上,换行符的数量少于您声称不起作用的答案之一(这是在平台的子集上echo -e发出的东西-e根本不是,这并不是到处ssh-keygen都是可用的)。
查尔斯·达菲

...要清楚,我将生产ssh-keygen -N ''过程中的自动化安装过程作为一部分使用,并且它根本不读取stdin,因此不需要将管道echo任何 echo变体)插入管道。(当然,我认为stdin已连接到/dev/null我的生产用例中;将它附加到TTY上可能会有不同的行为,但更好的答案是</dev/null而不是echo ... |
Charles Duffy

1
它提示我输入文件名: $ ssh-keygen -t rsa -N '' Generating public/private rsa key pair. Enter file in which to save the key (/home/dlyons/.ssh/id_rsa):
Mannix

0

为了安全性和性能,建议使用ed25519

yes "y" | ssh-keygen -o -a 100 -t ed25519 -C "Bla Bla" -f /mypath/bla -N ""

这里

-o OpenSSH密钥格式,而不是较早的PEM(需要OpenSSH 6.5+)

-a 筛选DH-GEX候选人时进行素数测试的次数

-t 密钥类型(ed25519,RSA,DSA等)

-f /mypath/bla 输出文件的路径和名称

-N "" 使用空的阶段

yes "y"对于没有互动。

它将生成两个文件

/mypath/bla
/mypath/bla.pub

bla文件是私有文件还是公开文件bla.pub

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.