Ваша попытка была обратной, то есть вы пытались передать выходные данные ssh-keygen
в cat
. Но нам нужно передать вывод cat
в ssh-keygen
:
# using multiline here doc
$ cat <<EOF | ssh-keygen -t rsa -b 2048
/tmp/id_rsa
/tmp/id_rsa.pub
password
EOF
ИЛИ
$ echo -e "/tmp/id_rsa\n/tmp/id_rsa.pub" | ssh-keygen -t rsa -b 2048
Но используйте это с осторожностью, это просто подает весь ввод в канал команда. В зависимости от того, как эта команда обрабатывает ввод, может произойти сбой, если ожидаемый ввод отличается от того, что передается по каналу.
Это может подойти для простых скриптов / команд (НЕ будет надежно работать для s sh -keygen во всех случаях [потому что, кажется, в некоторых случаях он порождает другой процесс для запроса ключевой фразы]).
ref. https://tldp.org/LDP/abs/html/here-docs.html для heredo c