下面的命令在我的本地主机上运行良好,并且得到了所需的输出。见下文
$ 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
存储在用户配置文件中。但是,此设置不会在 shell 脚本中生效(请参阅这里例如),所以我必须显式调用
ssh -i app/private_key
在脚本中。这解决了这个问题。