# Datei auf Remoteserver kopieren



## mlange8801 (31. Jan 2006)

Hallo,

ich bräuchte die Möglichkeit, bei einem Upload, die Datei auch noch auf einen anderen Server zu kopieren.
Auf dem (Linux) Server gibt es scp/sftp.
Wie mache ich das am besten - geht das vielleicht  relativ einfach mit Java (Ant?) oder rufe ich da besser (aus einer Javaklasse) ein shellscript auf, was die Datei per scp kopiert?


Vielen Dank
Mark


----------



## KSG9|sebastian (31. Jan 2006)

Besorg dir nen scp-Client für Windows, am besten ein CommandLine-Tool und steuer den Client dann über ein Script (Batch).
Wofür willst du da Java verwenden ? Macht imho keinen Sinn mit Java.


----------



## Bleiglanz (31. Jan 2006)

würde die Skriptvariante bevorzugen, aber wahrscheinlich musst du eine der verfügbaren SSH Java Bibliotheken verwenden

scp oder sftp sind fast unmöglich "extern" zum laufen zu bringen (weil die Authentifizierung nur sehr schlecht automatisiert werden kann)

Ausnahme: Key-Based Acces auf den Server, wobei der SSH Client einen Private-Key ohne Passphrase verwendet (leer), dann kann man scp tatsächlich "interaktiv" nutzen, ist aber auch wieder bedenklich

mit ant könnte es aber klappen:

```
<scp file="myfile.txt"
       todir="user@somehost:/home/chuck" 
       keyfile="${user.home}/.ssh/id_dsa"
       passphrase="my extremely secret passphrase"
  />
```
leider sind dann alle Geheimnisse im Klartext vorhanden


----------



## mlange8801 (31. Jan 2006)

> Besorg dir nen scp-Client für Windows, am besten ein CommandLine-Tool und steuer den Client dann über ein Script (Batch).
> Wofür willst du da Java verwenden ? Macht imho keinen Sinn mit Java.



Der Upload erfolgt über Java.
Das kopieren müßte natürlich auch nach dem upload automatisch angestoßen werden.
Das geht dann natürlich nur aus der Java Klasse heraus.
Das ganze sind auch linux Rechner - mit vorhandenen scp clients - also ein shellscript wäre möglich.
Ich frage mich nur ob das die einfachste Möglichkeit ist.

cu mark


----------



## mlange8801 (31. Jan 2006)

> Ausnahme: Key-Based Acces auf den Server, wobei der SSH Client einen Private-Key ohne Passphrase verwendet (leer), dann kann man scp tatsächlich "interaktiv" nutzen, ist aber auch wieder bedenklich



So hatte ich mir das auch gedacht ist wahrscheinlich am einfachsten.
Das homeverzeichnis des Users der mir zur Verfügung steht ist aber das Documentroot des Webservers.
Die Public Keys lägen dann im document_root/.ssh/authorized_keys2 - dürfte aber eigentlich kein Problem sein, weil das nicht ausgeliefert wird, oder?

Na ja, vielen Dank schonmal werde ich mal auspropieren.


----------



## Guest (2. Feb 2006)

Process p = Runtime.getRuntime().exec( "scp ...." );
könnte ich das zwar ausführen - das dürfte dann allerdings als tomcat ausgeführt werden.
Für den User habe ich jetzt keine keyfile auf dem Zielserver erstellt - geht das überhaupt?
Kann man da vielleicht irgendwie den User ändern?
[/quote]


----------



## Bleiglanz (2. Feb 2006)

man scp


----------



## Guest (2. Feb 2006)

> man scp



scp -i  private-key oder?


----------



## Bleiglanz (2. Feb 2006)

ja, und den "RemoteUsernamen" nicht vergessen

remotename@host:/

als "Ziel"


----------

