
Следующая команда отлично работает с моего локального хоста, и я получаю желаемый вывод. Смотрите ниже
$ ssh -o ConnectTimeout=7 -o BatchMode=yes [email protected] "echo WORKS;exit"
Output:
WORKS
Теперь я помещаю эту команду в файл скрипта, test.sh
имеющий достаточные права на выполнение.
$ cat test.sh
segment=$(ssh -o ConnectTimeout=7 -o BatchMode=yes [email protected] "echo WORKS;exit")
echo "SEGMENT $segment"
Я не получаю желаемого результата. Фактически я получаю следующую ошибку:
$ ./test.sh
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
SEGMENT
я ожидал
SEGMENT WORKS
Теперь ошибка «Отказано в доступе» исчезает, но
Можете ли вы подсказать, в чем может быть проблема?
решение1
Проблема была в том, что я использовал псевдоним
alias ssh=ssh -i /app/private_key
хранится в профиле пользователя. Однако эта настройка не действует в скрипте оболочки (см.здесьнапример), поэтому мне пришлось явно вызвать
ssh -i app/private_key
в скрипте. Это решило проблему.