2017-01-11 3 views
1

Ich arbeite mit phpseclib (https://github.com/phpseclib/phpseclib) und ich stoße auf ein Problem, das ich nicht zu lösen weiß.phpseclib connect zu localhost mit sftp - ssh

Also im Grunde möchte ich PHP verwenden, um eine Verbindung zu demselben Server herzustellen, auf dem das Skript über SSH ausgeführt wird, um eine SFTP-Transaktion durchzuführen.

Ich versuchte ssh localhost auf der Kommandozeile und es meldet mich mit meinem SSH-Schlüssel-Paar.

Ich implementierte phpseclib zum Download/Upload von Dateien von/zu einem Remote-Server. Jetzt schreibe ich Komponententests für den Code, den ich geschrieben habe. Allerdings kann ich die SFTP-Klasse nicht vortäuschen, da das Objekt für jede Verbindung initiiert werden muss, gibt es eine Möglichkeit, die Funktion zu testen, die ich geschrieben habe, im Grunde genommen nur eine Dateidownload- und Prozessdatenfunktion.

+0

phpseclib ist Unit-getestet. SSH2 wird getestet, indem Travis CI einen SSH-Server auf der Test-VM installiert. Sie können sehen, wie phpseclib es auf https://github.com/phpseclib/phpseclib/blob/master/travis/setup-secure-shell.sh idk einrichtet, wenn das hilft – neubert

Antwort

0

Meine Vermutung: Ihre ~/.ssh/id_rsa Datei ist der private Schlüssel, der dem öffentlichen Schlüssel in ~/.ssh/authorized_keys entspricht. Wenn Sie also versuchen, sich mit ssh localhost anzumelden, loggt es Sie nicht ohne Authentifizierung ein - es meldet Sie mit einem öffentlichen Schlüssel an, aber Sie merken es einfach nicht.

Einige andere weniger wahrscheinlich Möglichkeiten:

  1. Sie haben ssh-agent installiert und verwenden, dass es ohne zu merken.
  2. Sie sind Authentifizierung mit Host-basierte Authentifizierung (die phpseclib nicht unterstützt)

ssh -v localhost tun und dann zu veröffentlichen, was sagt es hilfreich sein könnte.

+0

Sie haben Recht, ich benutze SSH Schlüssel- Paar, um auf meinen Server zuzugreifen. und das ausführliche Protokoll zeigt es. Ich habe meine Frage aktualisiert – lightbringer