SSHによるスクリプトの実行権限が拒否されました。

SSHによるスクリプトの実行権限が拒否されました。

WebページがサーバーAにロードされたら、サーバーBでスクリプトを実行したいと思います。サーバーBにログインしてスクリプトを実行して、サーバーAの一連のコマンドを使用してこれを実行できますが、PHPが実行できるようにするには、これらすべてのタスクを1つのステートメントで完了する必要があります。

これは働きます:

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

(出力はありませんが、データベースから結果を見ることができます)

だから、誰もがメッセージがどこに行くのかを見ることができます。しかし、この内容を1つの文にまとめようとすると、次のようになります。

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'

最初の場合、シェルはscript.phpローカルコンピュータから呼び出され、何も返さない可能性があるため、コマンドは最終的にssh remote@B対話型シェルを提供します。

2番目のコマンドは、ステートメント(/home/remote/script.php)をsshリモートシステムのシェルに渡します。

バックティックを一重引用符に変更してみてください。

関連情報