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

(아파치/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대화형 셸을 제공하게 됩니다.

두 번째 명령은 명령문( /home/remote/script.php)을 ssh원격 시스템의 셸에 전달합니다.

백틱을 작은따옴표로 변경해 보세요.

관련 정보