【发布时间】:2010-09-07 14:31:14
【问题描述】:
我想创建一个脚本,它只运行ssh-keygen -t rsa。但是怎么传给它3次进入呢?
【问题讨论】:
标签: bash
我想创建一个脚本,它只运行ssh-keygen -t rsa。但是怎么传给它3次进入呢?
【问题讨论】:
标签: bash
试试:
ssh-keygen -t rsa -N "" -f my.key
-N "" 告诉它使用空密码(与交互式脚本中的两个输入相同)
-f my.key 告诉它将密钥存储到my.key(根据需要更改)。
整个过程无需您提供任何输入键即可运行 :)
将输入发送到交互式脚本:
echo -e "\n\n\n" | ssh-keygen -t rsa
【讨论】:
ssh-keygen 的破折号被删除了 - 你把它添加回来了吗? {edited} 另外 - 您不能多次运行脚本 - 它会更改问题以确认您要覆盖现有的 _rsa 密钥文件(因此需要提供 y 或 n)
yes "" 而不是echo -e "\n\n\n"(yes 在无穷大中输出给定的任何参数[或默认为“y”] - 非常适合那些只想对程序可能提示的任何内容提供“是”答案)。 yes 更短,如果 ssh-keygen 添加问题,也会自动回答。 :)
带有密码的版本是:
$ ssh-keygen -t rsa -b 4096 -C "comment" -P "examplePassphrase" -f "desired pathAndName" -q
【讨论】:
同意Michel Marro,除了它需要更多: 如果文件已经存在,它仍然会交互询问是否必须覆盖它。
使用这个question的答案。
yes y | ssh-keygen -q -t rsa -N '' >/dev/null
需要重定向到 null 以使覆盖消息静音。
【讨论】:
echo -e "\n"|ssh-keygen -t rsa -N ""
【讨论】:
echo -e 发出除-e 之外的其他东西的平台子集上,这并非无处不在@ 987654324@可用)。
ssh-keygen -N '' 作为自动安装过程的一部分,它根本不读取标准输入,因此不需要echo (any echo 变体)通过管道输入。 (当然,在我的生产用例中,我相信 stdin 已连接到 /dev/null;当它连接到 TTY 时可能会有不同的行为,但更好的答案是 </dev/null 而不是 echo ... |)
$ ssh-keygen -t rsa -N '' Generating public/private rsa key pair. Enter file in which to save the key (/home/dlyons/.ssh/id_rsa):
为了安全和性能,建议使用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 是公开的。
【讨论】: