Я перевожу некоторые домашние папки из одного 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
Есть идеи, в чем может быть проблема?
permissions
scp
Xoundboy
источник
источник
Ответы:
попробуйте выполнить скрипт с помощью sudo ./script.sh, возможно, потому что вы пишете в / root
источник
Скорее всего, это связано с тем, что shebang запускает новый экземпляр оболочки bash, в котором ssh-agent не был настроен. Чтобы убедиться, вы можете добавить следующую строку в начало вашего скрипта:
ssh-add -l >> $HOME/ssh.log 2>&1
запустите скрипт и проверьте, что вы получаете в ssh.o
источник