Die Verbindung zu SFTP mit PHP-und private-key
Habe ich gelesen, die Artikel nach und kann Sie einfach nicht finden "die Lösung", das funktioniert für das was ich habe.
Ich versuche zum hochladen von Dateien über SFTP mit php-scripting. Ich habe die Verbindung mit CyberDuck erfolgreich, aber ich brauche dazu ein Programm.
Habe ich eine .PPK-Datei von der Verkäuferin, dass ich in CyberDuck. Ich habe einen Benutzernamen. Ich habe den Hostnamen. Wenn ich öffnen Sie die PPK-Datei die ich einige Öffentliche Leitungen, - Private Leitungen und Privat-MAC.
Ist es trotzdem kann ich auf den server zugreifen, zu tun, was ich tun müssen, mit Informationen, die ich habe?
Hier ist der code, den ich spielte mit:
<?php if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
?>
<?php
$conn = ssh2_connect('hostname.com', 22);
echo $conn;
ssh2_auth_pubkey_file($conn,'USERNAME','/var/www/html/FILENAME.PPK');
//send a file
ssh2_scp_send($conn, '/var/www/html/FILETOSEND.TXT', 'FILETOSEND.TXT', 0644);
?>
Ich erhalte keine Fehler, aber die Datei nicht zeigen, bis auf dem server.
Ich kann bestätigen, dass SSH2 ist installiert auf meinem webhost.
Vielen Dank für jede Hilfe können Sie zur Verfügung stellen.
- Ich würde stark empfehlen die Verwendung von phpseclib für das, was Sie erreichen wollen. Es ist viel besser als der php-build-in ssh2-Funktionen und sehr einfach zu bedienen
- Sie scheinen nicht zu wissen, dass
ssh2_auth_pubkey_file
erwartet 4 Argumente, und nicht 3. php.net/manual/en/function.ssh2-auth-pubkey-file.php - Ich wollte sehen, was ist der Grund, warum ich nehme an, ich habe Fragen. Kann ich auseinander brechen, die PPK-Datei, in der fehlende Elemente?
- danke, ich werde schauen
- Die ppk-Dateiendung zeigt an, dass der Schlüssel ist, ein PuTTY-formatierten privaten Schlüssel. libssh2 funktioniert nur mit PKCS1 formatierten privaten Schlüssel. phpseclib - empfohlen von michael - unterstützt. Siehe phpseclib.sourceforge.net/ssh/compare.html#pubkey
- Haben Sie einen Blick auf andy-carter.com/blog/connecting-to-sftp-with-php es wird erklärt, wie es zu tun
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Frage ist schon ziemlich alt, aber da war ich auf der Suche nach genau der gleichen Antwort, hier ist das, was ich Zusammentragen konnte.
Zuerst: Ändern-key-format aus .ppk zu .pem
.pkk-Schlüssel PuTTY-format private key.
Wenn Sie möchten, ändern Sie Sie auf .pem-format vorliegen, benötigen Sie zum installieren von putty-tools mit:
(Auf einem Mac installieren putty-Paket mit homebrew. Für Windows habe ich keine Ahnung.)
Dann können Sie das format des Schlüssels:
Nur für den Fall Sie möchten, extrahieren des öffentlichen Schlüssels aus, dass der private Schlüssel (brauchen Sie nicht für den rest der Antwort, aber nur für den Fall), ist es ganz einfach:
Zweite: Login mit sFTP
Nun, dass Sie die
privatekey.pem
, die Sie verwenden können, phpseclib Verbindung über SFTP. Installieren Sie zuerst phpseclib mit Komponist:Dann in PHP:
Wenn Sie wollen mehr Informationen, gehen Sie zu der phpseclib sFTP-feature-Liste.