Сценарий cron оболочки Bash, подключающийся к EC2 — ошибка ssh-add

Цель состоит в том, чтобы получить сценарий bash, который подключается к EC2 для загрузки удаленных резервных копий. У меня это есть, но я должен продолжать запускать их с терминала вручную, так как они выходят из crontab с ошибкой «Отказано в доступе (общедоступный ключ)», поэтому ключ, очевидно, не добавляется.

В моем понимании явно есть дыра. Я возился в течение нескольких часов, просматривая Google, и до сих пор не заработал. Что я делаю неправильно с точки зрения того, чтобы скрипт сам добавлял ключи?

#!/bin/sh
# Add the client key so we can SSH in
eval "$(ssh-agent)"
ssh-add ec2-key.pem

# Download the web file backup.
# Example file web1_2013-06-30_00-30.tar.gz
WEBDATE=`date +"%Y-%m-%d"`;
echo $(date) " - Web Backup >> Running secure copy: scp {user}@{ip}:/var/backup/web1/web1_$WEBDATE* site-files/"
scp {user}@{ip}:/var/backup/web1/web1_$WEBDATE* site-files/
... etc ...

person JamesNZ    schedule 22.12.2014    source источник
comment
Откуда вы ожидаете, что этот скрипт будет запущен? Какой рабочий каталог? Где находится этот файл ec2-key.pem?   -  person Etan Reisner    schedule 23.12.2014
comment
И сценарий оболочки, и файл ключа находятся в /data/backups/{client_dir_here}. Так они в одном каталоге.   -  person JamesNZ    schedule 23.12.2014
comment
Относительные пути в скрипте разрешаются не относительно каталога скрипта, а относительно каталога, из которого вы запускаете скрипт. Убедитесь, что вы запускаете скрипт из /data/backups/{client_dir_here}.   -  person Martin Prikryl    schedule 23.12.2014


Ответы (1)


Используйте полный путь к ключу так же, как вы используете полный путь к скрипту и выходным файлам, и он должен работать.

Если вы хотите, чтобы скрипт автоматически загружал ключ из того же каталога, что и скрипт, см. Получение исходного каталога сценария Bash изнутри и http://mywiki.wooledge.org/BashFAQ/028, чтобы узнать, как/как это сделать.

person Etan Reisner    schedule 23.12.2014