Ответ 1
В зависимости от вашего дистрибутива и версии ssh-add вы можете или не использовать опцию -p
ssh-add, которая считывает кодовую фразу из stdin таким образом:
cat passfile | ssh-add -p keyfile
Если это не работает, вы можете использовать Expect, инструмент Unix, чтобы интерактивные приложения не были интерактивными. Вам нужно будет установить его из диспетчера пакетов.
Я написал инструмент для вас в ожидании. Просто скопируйте содержимое в файл с именем ssh-add-pass и установите для него исполняемые разрешения (chmod +x ssh-add-pass
). Вы также можете скопировать его в /usr/bin или/usr/local/bin, чтобы быть доступным из поиска $PATH.
#!/bin/bash
if [ $# -ne 2 ] ; then
echo "Usage: ssh-add-pass keyfile passfile"
exit 1
fi
eval $(ssh-agent)
pass=$(cat $2)
expect << EOF
spawn ssh-add $1
expect "Enter passphrase"
send "$pass\r"
expect eof
EOF
Использование просто: ssh-add-pass keyfile passfile