通过 ssh 执行脚本的权限被拒绝

通过 ssh 执行脚本的权限被拒绝

当服务器 A 上加载网页时,我希望它在服务器 B 上运行脚本。我可以通过登录服务器 B 并执行脚本,使用服务器 A 中的一系列命令来完成此操作,但需要全部完成一条语句,以便 PHP 可以执行它。

这有效:

user@A$ sudo -u www-data bash
bash: /home/user/.bashrc: Permission denied

然后:

www-data@A$ ssh -i /etc/ssh/www-data/id_rsa remote@B
Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-32-generic x86_64)

然后:

remote@B$ /home/web/script.php

(没有输出,但我可以在数据库中看到结果)

所以我可以看到每个人都可以访问消息的去向。但是当我尝试将其合并为一个语句时:

user@A$ sudo -u www-data bash
bash: /home/zen/.bashrc: Permission denied

(就像 apache / php 一样)

www-data@A$ ssh -i /etc/ssh/www-data/id_rsa remote@B `/home/remote/script.php`

然后我得到:

bash: /home/remote/script.php: No such file or directory
Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-32-generic x86_64) ....

它还让我登录到 B,这是不相关但奇怪的。

然后,作为健全性测试,我继续从那里运行脚本:

remote@B$ /home/remote/script.php

预先感谢您的任何建议!

答案1

引用的优先顺序可能是问题所在:

ssh remote@B `/home/remote/script.php`

与以下内容有很大不同:

ssh remote@B '/home/remote/script.php'

第一种情况下,shellscript.php在本地计算机上进行调用,这可能不会返回任何内容,因此命令最终为ssh remote@B,为您提供了一个交互式 shell。

第二个命令将语句 ( /home/remote/script.php) 传递ssh到远程计算机上的 shell。

尝试将反引号更改为单引号。

相关内容