# Datenübertragung mit SSH



## Bobody (15. September 2010)

hey leute,

derzeit arbeite ich an ein projekt, welches dateien per ssh auf einen server transferieren soll.
er baut auch korrekt eine Verbindung zum Server auf, jedoch bekomme ich im JBoss5 dann eine FileNotFound - Fehlermeldung.

Meine erste Vermutung - falsche Rechte, dass ich keine Dateien erstellen kann. 
Wenn ich mich nun jedoch direkt als der benutzer Einlogge, klappt das Anlegen einer Datei.

Das Kuriose ist, dass das Projekt unter RedHat 32Bit und JDK 1.4 funktioniert hat und nun unter SUSE 64Bit JDK 1.6 nicht mehr funktioniert.

Weiß jemand einen Rat, ob das an Servereinstellungen liegen kann oder am Code selber?


----------



## gorefest (15. September 2010)

du kopierst per ssh eine datei auf deinen server. direkt per scp? oder mit einem java-framework a'la jsch?

der jboss meldet dir eine filenotfound exception, dazu wäre das code snipplet aus der jboss-anwendung echt hilfreich.

du kannst einen jboss5 mit java 1.4 starten? wie soll das denn gehen? der 5er jboss ist gespickt mit annotations und die gehen erst ab java 5.


----------



## Bobody (15. September 2010)

jo du hast es eigentlich auf den punkt gebracht.

natürlich hast du recht mit jdk 1.4 und jboss5, damals war es jdk 1.4 und jboss3 --> nun umgestellt auf jboss5 mit jdk 1.6

und als framework verwendet wird: 
- jsch

problem tritt in dieser function auf:

```
public void saveStreamToFile(InputStream in, String remoteFile)
			throws SSHException {
		if (sftp == null || !sftp.isConnected())
			connectSftp();
		try {
			if (checkDirectory(remoteFile)) {
				RMCLog.debug(this, "directory on server exists");
			} else {
				throw new SSHException("Directory "
						+ remoteFile.substring(0, remoteFile.lastIndexOf("/"))
						+ " does not exist");
			}
			sftp.put(in, sftp.getHome() + "/" + remoteFile,
					ChannelSftp.OVERWRITE);
		} catch (SftpException e) {
			throw new SSHException("Could not save Stream to file: "
					+ remoteFile);
		}
	}
```

die genau zeile in der er rausspringt ist: sftp.put(in, sftp.getHome() + "/" + remoteFile,				ChannelSftp.OVERWRITE);


----------



## gorefest (15. September 2010)

schau doch mal nach, was a) in der SftpException und b) in sftp.getHome() + "/" + remoteFile steht.


----------

