Я пишу скрипт, который должен установить права доступа к файлу с закрытым ключом и добавить его в ssh, чтобы его можно было использовать позже:
echo "Setting up the private SSH key..."
if [[ $EUID > 0 ]]; then
echo "This script needs to be run as root/sudo"
exit 1
fi
#CmdLine Argument Parsing
for i in "$@"; do
case $i in
-k=*|--key=*)
KEY="${i#*=}"
;;
esac
done
if [ ! -e "$KEY" ]; then
echo "Error: The private key file $KEY does not exist"
exit 1
else
echo "Private key found..."
fi
sudo chmod 600 $KEY
echo "Private key permissions set..."
exec ssh-agent bash
eval `ssh-agent -s`
echo "SSH Agent restarted..."
sudo ssh-add $KEY
echo "SSH Key added..."
echo "...done"
Сценарий выполняется с помощью: sudo bash ./myscript.sh --key=~/.ssh/mykey-rsa
. Сценарий, по-видимому, никогда не завершается, последним наблюдаемым эхо-сообщением является «Права доступа к закрытому ключу установлены».
Может кто-нибудь объяснить, что не так с этим сценарием и как я должен исправить это, чтобы он работал как задумано?
С уважением
exec
не запускает новый процесс, он заменяет текущую программу в текущем процессе новой программой в том же процессе. Таким образомexec ssh-agent bash
, строки в скрипте не будут выполняться, даже еслиssh-agent
программа завершится.