Supportnet Computer
Planet of Tech

Supportnet / Forum / Linux

SCP-upload per Script





Frage

Hi! Folgende Problemstellung: Ich muss sensible Daten(wirklich sensibel, also keine Vorschlag à la "nimm doch einfach FTP") auf einen Remoteserver hochladen. Ich hab mir gedacht dafür scp zu nehmen. Der Upload sollt über eine Weboberfläche(PHP) gestartet werden. Also [code] exec( "scp -i my-priv-key test.txt myuser@mydomaine.de:/home/myhome" ); [/code] Aber wie gehts jetzt weiter? Denn scp is ja interaktiv und will jetzt eine Passphraseeingabe. Per proc_open() gehts leider nicht weil mein PHPzu alt ist. Wär super wenn jemand ne Lösung wüsste. Michael

Antwort 1 von labbe

hab mich zufällig gerade mit scp ein bisschen beschäftigt, hab alleridings nich wirklich ne ahnung von dem ding.

habe aber einige nette gui's dafür gefunden, viellecht helfen die dir weiter, such mal bei sourceforge.net nach "scp gui".

Antwort 2 von Chonhulio

Du kannst dazu die Private/Public-Key Authentifizierung verwenden.

1. Schlüssel auf dem Rechner erzeugen, der den scp-Befehl ausführen soll:

ssh-keygen -b 1024 -t rsa -f ~/.ssh/id_XYZ

Kein Passwort verwenden (zweimal Enter)!

2. Die Datei ~/.ssh/id_XYZ.pub auf den Server kopieren, und dort an die Datei ~/.ssh/autorized_keys anfügen:

cat id_XYZ.pub >> ~/.ssh/autorized_keys

Falls das Verzeichnis .ssh nicht existiert einfach herstellen.

3. Jetzt solltest du dich mit

ssh/scp -i id_XYZ remote

passwortfrei anmelden können.

XYZ durch etwas kurzes, aber beschreibendes ersetzen.

Jeder, der Zugriff auf den Schlüssel (~/.ssh/id_XYZ) hat kann sich damit ohne weitere Überprüfung anmelden, d.h. du solltest das Verfahren nur anwenden, wenn du den Schlüssel auf einem Vertrauenswürdigen Rechner abglegen kannst. Ist das nich der Fall, mußt du den Schlüssel seinerseits mit einem Passwort sichern.

Antwort 3 von Chonhulio

PS:
Natürlich muss scp auf die Datei id_XYZ zugreifen können. Ich kenne PHP nicht, nehme aber an, dass es einen eigenen, eingeschränkten Benutzeraccount verwendet. Dieser Account muß also den Schlüssel lesen dürfen, was ein großes Risiko darstellt, falls dein Webserver öffentlich zugänglich ist.

Übrigens muss RSA-Authentifizierung auf dem Server erlaubt sein (ist Standardeinstelllung).

mfg

Antwort 4 von marty

@ Chonhulio

Das Ganze funktioniert auch MIT Passwort (muss auch nicht extra beim Verbindungsaufbau angegeben werden).

Ich hab mal meine Notizen reinkopiert:

Wenn man eine ssh-verbindung öfter nutzen will, kann man sich den Zugang etwas leichter machen um das Passwort nicht immer mit angeben zu müssen.

Dafür auf dem lokalen Rechner in das Verzeichnis "/home/benutzer/.ssh" wechseln. Jetzt ein Schlüsselpaar als dieser Benutzer (NICHT ALS ROOT) erstellen mit Eingabe von

ssh-keygen -t rsa


Es werden 2 Schlüssel in dieses aktive Verzeichnis generiert : "id_rsa" und "id_rsa.pub"

Jetzt muss der Public-Schlüssel auf den Zielrechner kopiert werden mit :

ssh-copy-id /home/benutzer/.ssh/id_rsa.pub benutzer@beispiel.dyndns.org


Auf dem Zielrechner wird in "/home/benutzer/.ssh" die Datei "authorized_keys" erstellt, bzw. falls vorhanden , erweitert.

Eine Verbindung zu dem Zielrechner wird nun mit den befehl

ssh benutzer@beispiel.dyndns.org


aufgebaut.


Alles nicht so einfach ...

Antwort 5 von BFGM

@Chonhulio
gute Antwort, perfekt wäre sie ohne Tippfehler ;)
Funktioniert deutlich besser wenn die Datei ~/.ssh/authorized_keys heisst statt ~/.ssh/autorized_keys

So long greetz

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: