MLS*_*LSC 2 linux bash here-document
我有以下命令,但它对我不起作用...
cd /etc/postfix/ssl/ && openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024 <<PASS
password
password
PASS
Run Code Online (Sandbox Code Playgroud)
输出是:
109 semi-random bytes loaded
Generating RSA private key, 1024 bit long modulus
...............................++++++
...........++++++
e is 65537 (0x10001)
Enter pass phrase for smtpd.key:
Run Code Online (Sandbox Code Playgroud)
它应该自动回答问题并自动输入密码。
我总是HEREDOC用于在 bash 上自动化我的问答并且工作正常......
这里有什么问题?
可能是因为安全问题,但是我们如何处理这样的问题呢?
我也知道这个问题,但无法解决。
我正在尝试这个:(没有结果)
#!/bin/bash
PASS="password"
printf '%s\n' "$PASS" | {
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024 -passout fd:3
} 3<&0
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
您必须添加-pass stdinforopenssl来读取stdin,否则,正如@XTian所说,它将直接从关联的tty或pts设备。没有外壳重定向可以解决这个问题。
从@Xtianman页面的同一部分给出:
stdin 从标准输入读取密码。
你可以这样做:
cd /etc/postfix/ssl/ &&
openssl genrsa -passout stdin -des3 -rand /etc/hosts -out smtpd.key 1024 <<PASS
password
PASS
Run Code Online (Sandbox Code Playgroud)
您也可以使用 指定密码-passout pass:,但这更不安全,因为任何用户都可以使用密码看到密码ps(请参阅@XTian 帖子中的手册页部分)。