Guten Morgen.
Aus einem Verzeichnis sollen Dateien per sftp auf einen entfernten Server übertragen werden. Die Verbindung wird per sFTP im Batch-Mode hergestellt:
Der public key liegt genau da, und über die Konsole auf dem Server gestartet wird auch die Batchdatei ausgeführt, die Dateien werden übertragen. Jetzt soll das ganze mitten aus einem PHP-Script ausgeführt werden:
Das bringt folgendes Ergebnis:
Was will er denn da? Na gut die drei Dateien aus '/root/.ssh/' nach '/var/www/.ssh' kopiert, Ergbnis:
Die Schlüsseldateien sind mit 0600, das Verzeichnis mit 0700 bedacht. PHP läuft (auch laut phpinfo()) als root. Trotzdem geht das ganze nicht per exec().
Für Vorschläge wäre ich wirklich dankbar.
Viele Grüße
Fenring
[EDIT /]
Hm, der Hund lügt. Natürlich läuft PHP als User apache. Batch/Schlüssel Verzecihnise und Dateien per chown an den apache übergeben. Jetzt bekomme ich eine neue Fehlermeldung:
Aus einem Verzeichnis sollen Dateien per sftp auf einen entfernten Server übertragen werden. Die Verbindung wird per sFTP im Batch-Mode hergestellt:
Code:
sftp -oIdentityFile=/root/.ssh/id_dsa -b /var/www/batch/test user@host 2>&1
Der public key liegt genau da, und über die Konsole auf dem Server gestartet wird auch die Batchdatei ausgeführt, die Dateien werden übertragen. Jetzt soll das ganze mitten aus einem PHP-Script ausgeführt werden:
Code:
$exec = exec('sftp -oIdentityFile=/root/.ssh/id_dsa -b /var/www/batch/test user@host 2>&1', $out, $return);
echo '<pre style="text-align:left">';var_dump($out, $return, $exec);echo '</pre>';
Das bringt folgendes Ergebnis:
Code:
array(3) {
[0]=>
string(43) "Could not create directory '/var/www/.ssh'."
[1]=>
string(29) "Host key verification failed."
[2]=>
string(46) "Couldn't read packet: Connection reset by peer"
}
int(255)
string(46) "Couldn't read packet: Connection reset by peer"
Was will er denn da? Na gut die drei Dateien aus '/root/.ssh/' nach '/var/www/.ssh' kopiert, Ergbnis:
Code:
array(2) {
[0]=>
string(29) "Host key verification failed."
[1]=>
string(46) "Couldn't read packet: Connection reset by peer"
}
int(255)
string(46) "Couldn't read packet: Connection reset by peer"
Die Schlüsseldateien sind mit 0600, das Verzeichnis mit 0700 bedacht. PHP läuft (auch laut phpinfo()) als root. Trotzdem geht das ganze nicht per exec().
Für Vorschläge wäre ich wirklich dankbar.
Viele Grüße
Fenring
[EDIT /]
Hm, der Hund lügt. Natürlich läuft PHP als User apache. Batch/Schlüssel Verzecihnise und Dateien per chown an den apache übergeben. Jetzt bekomme ich eine neue Fehlermeldung:
Code:
array(2) {
[0]=>
string(30) "Permission denied (publickey)."
[1]=>
string(46) "Couldn't read packet: Connection reset by peer"
}
int(255)
string(46) "Couldn't read packet: Connection reset by peer"
Zuletzt bearbeitet: