PHP führt ein Shell-Skript für scp aus
Frage
Ich möchte PHP verwenden, um ein Shell-Skript auszuführen, das eine Datei von Server 1 an Server 2 sendet.Ich habe den öffentlichen Schlüssel von Server 1 auf die autorisierten Schlüssel von Server 2 geschrieben und es funktioniert perfekt.
Aus irgendeinem Grund sendet das folgende Skript die Datei nicht wirklich von Server 1 an Server 2:
// This is a webpage at http://server1.com/sendfile.php
<?php
if($_POST['a'])
{
echo '<pre>';
echo passthru('./scp.sh');
echo '</pre>';
}
?>
<form method="post">
<button name="a" value="Af">Send File</button>
</form>
//This is the contents of scp.sh
scp ../dbexport/db.txt someuser@server2.net:
Also, wenn ich ausführe scp.sh
Vom Terminal aus funktioniert alles einwandfrei – die Datei wird tatsächlich gesendet und empfangen.
Aber wenn ich gehe http://server1.com/sendfile.php
und drücken Sie die Taste, die PHP-Datei führt tatsächlich die Shell-Datei aus (ich habe dies bestätigt, indem ich Echo-Anweisungen vor und nach dem Befehl scp eingefügt habe), aber die Datei wird nie erfolgreich von server2.com empfangen
Weiß jemand, woran das liegen könnte?
Lösung
Marc B hat meine Frage mit einem Kommentar beantwortet und hier gepostet
Haben Sie den Schlüssel zu den „authorized_keys“ des Webserver-Kontos hinzugefügt?Nur weil es von einer Shell aus funktioniert, die unter IHREN Berechtigungen läuft, hat das absolut nichts mit einer Shell zu tun, die unter der ID des Webservers läuft.– Marc B 9. Januar um 19:47
Ooooh yeahhhhh...das habe ich vergessen – John, 9. Januar um 19:57
Ja, es hat funktioniert.Danke Marc!– John 9. Januar um 20:42