Я перевожу некоторые домашние папки из одного Linux-бокса в другой, используя scp. Я сохранил свой открытый ключ в файле author_keys целевого окна, и следующая команда отлично работает, когда я набираю его в командной строке:

scp myArch.tar root@myOtherServer:/root/dumps

... однако, когда я помещаю это в сценарий, как это ...

#!/bin/bash
tar -cf /tmp/$1.tar $1; wait
scp /tmp/$1.tar root@myOtherServer:/root/dumps

.. и вызвать его, передав имя папки в качестве параметра, я получаю следующую ошибку.

[root@myHost home]# /root/migrate myHomeFolder
Permission denied (publickey).
lost connection

Есть идеи, в чем может быть проблема?

2 ответа2

0

попробуйте выполнить скрипт с помощью sudo ./script.sh, возможно, потому что вы пишете в /root

0

Скорее всего, это связано с тем, что shebang запускает новый экземпляр оболочки bash, в котором ssh-agent не был настроен. Чтобы убедиться, что вы можете добавить следующую строку в начало вашего скрипта:

ssh-add -l >> $HOME/ssh.log 2>&1

запустите скрипт и проверьте, что вы получаете в ssh.o

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .