scp 在命令行中有效,但在 shell 脚本中无效 - 权限被拒绝

scp 在命令行中有效,但在 shell 脚本中无效 - 权限被拒绝

我正在使用 scp 将一些主文件夹从一个 Linux 机器迁移到另一个。我已将公钥保存到目标机器的 authorized_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

您知道可能是什么问题吗?

答案1

尝试使用 sudo ./script.sh 执行脚本可能是因为您正在写入 /root

答案2

这很可能是由于 shebang 启动了 bash shell 的新实例,而其中尚未设置 ssh-agent。为了确保安全,您可以在脚本顶部添加以下行:

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

运行脚本并检查 ssh.o 中的内容

相关内容