为生成ssh密钥的bash脚本自动“输入”按键

时间:2010-09-07 14:31:14

标签: bash

我想创建脚本,它只运行ssh-keygen -t rsa。但如何传递给它3次进入?

5 个答案:

答案 0 :(得分:203)

尝试:

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

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

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

整个过程运行时无需提供任何输入键:)

要发送进入交互式脚本:

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

答案 1 :(得分:20)

带密码的版本是:

$ ssh-keygen -t rsa -b 4096 -C "comment" -P "examplePassphrase" -f "desired pathAndName" -q 
  • -q用于沉默

来源为http://linux.die.net/man/1/ssh-keygen

答案 2 :(得分:0)

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

使用此question的答案。

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

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

答案 3 :(得分: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是公共文件。

答案 4 :(得分:-1)

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