웹 브라우저의 PHP 파일에서 rsync 쉘 명령 실행

웹 브라우저의 PHP 파일에서 rsync 쉘 명령 실행

첫째, 한 시스템에서 다른 시스템으로 변경 사항을 이동하려고 하며 이를 위해 synchfolders.sh다음과 같은 쉘 스크립트가 파일 에 있습니다.

rsync -av --delete -e 'sshpass -p Wordpress@123 ssh -p 22' [email protected]:/var/www/html/prosync/wp-content/plugins/ /var/www/html/devsync/wp-content/plugins >> /var/www/html/devsync/wp-content/mysynclog.txt

shell_exec()rsync 명령이 아닌 다른 브라우저에서 이 PHP 파일을 실행함으로써 PHP 파일에서 이 쉘 스크립트를 실행하려고 하는데 모두 실행 중이지만 rsync실행되지 않습니다. SO에서 항목을 검색했고 링크를 얻었습니다.https://stackoverflow.com/questions/30772816/php-exec-rsync-ssh-to-remote-server-not-working/30773063#30773063, 여기에서 말했듯이 우리는 명령줄에서 PHP 파일 실행을 시도했으며 완벽하게 작동하지만 브라우저를 통해서는 작동하지 않습니다. 왜, 우리가 어디서 실수를 했는지 알려주세요. 미리 감사드립니다

답변1

일반적으로 일반적인 대화형 셸에서 실행되지 않는 스크립트에서는 다음 중 하나를 확인해야 합니다.절대 경로 사용(즉, /usr/bin/rsync대신에 rsync) 또는올바른 환경 설정$PATH에 대한 좋은 값


추가 개선 사항: 비밀번호 기반 인증 대신 스크립트에서 사용할 키 기반 SSH 인증을 실제로 설정해야 합니다.

비밀번호 사용을 중지하고 키 사용을 시작하면 ssh 서버를 잠그고 보호할 수 있으며(비밀번호 인증을 비활성화하면 무차별 대입 공격이 중지됨) 더 중요한 것은 특정 키가 인증에 사용될 때 허용되는 것에 제한을 추가할 수 있습니다. 비밀번호로는 할 수 없는 일.

특정 호스트의 rsync에만 사용할 수 있도록 스크립트에 사용되는 키를 제한할 수 있습니다.

그러면 스크립트가 손상되더라도 도난당하는 것은 루트 비밀번호(서버에 대한 모든 권한을 부여함)가 아니라 제한된 액세스를 부여하는 개인 키(사용 가능한 경우)뿐입니다.

관련 정보