# SSH oder Telnet



## joerg3011 (18. Jan 2006)

Hi,

ich bräuchte mal die Erfahrungswerte von Leuten, die bereits damit gearbeitet werden.
Ich muss ein Programm unter Java Struts entwickeln (es wird auf nem Windows Server laufen), dass sich auf Linux Server verbinden und dort sowohl Files auslesen und runterkopieren kann, als auch Befehle wie bspw. df hinschicken kann, damit ich den freien Speicherplatz auslesen kann.

Die Frage ist jetzt, ob Telnet oder SSH besser geeignet ist. Zum einen von der Performance her, zum anderen vom Schwierigkeitsgrad der Umsetzung in Java her.

Würde mich freuen, wenn mir da jemand weiter helfen könnte.

Gruß Jörg

edit: ach ja, die größere Sicherheit der SSH-Verschlüsselung bitte außer Acht lassen, und ist es eigentlich auch möglich eine SSH-Verbindung aufzubauen, ohne sich andauernd mit Login und Passwort anzumelden?


----------



## Bleiglanz (18. Jan 2006)

völlig egal dass telnet etwas schneller wäre, das nimmt heut keiner mehr, du musst also eh SSH verwenden sonst lachen die Leute über dich 

google mal nach "SSH Java", es gibt ein paar Libraries die das können

versuch nicht das ganze mit Runtime.exec zu steuern, da ist nämlich die Übergabe des Passworts ein gewisses Problem

wenn der Linux Server aber eh nur im lokalen Netzwerk steht (und also Sicherheit nicht unbedingt soooo relevant), dann würd ich mit Samba eine Freigabe machen und mit einem cron job alle 5 Minuten "df > free.txt" irgendwo öffentlich ablegen

oder auch nur einen Webserver installieren und von der Struts-Anwendung aus die Datein über http abholen


----------



## Bleiglanz (18. Jan 2006)

> edit: ach ja, die größere Sicherheit der SSH-Verschlüsselung bitte außer Acht lassen, und ist es eigentlich auch möglich eine SSH-Verbindung aufzubauen, ohne sich andauernd mit Login und Passwort anzumelden?


ja, man kann über den sog. SSH-agent mit asymetrischen Keys passwortlose Accounts einrichten (aber wegen Sicherheit fraglich)

SSH mit Passwort erfordert de facto IMMER manuelles Eingreifen eines Users, das ist ein gewisses Problem bei cron oder Server-Reboots


----------



## joerg3011 (18. Jan 2006)

Hab mir bereits das Ganymed SSH-Package für Java geholt. 

Das mit dem Eingreifen des Users ist ja das Problem, die Anwendung soll sich beim Starten automatisch verbinden.


----------



## Bleiglanz (18. Jan 2006)

sollte eigentlich mit der Java Lib "programmatisch" möglich sein, dann wird eben username + password (oder besser username + passphrase bei public key authentifizierung) hart hinein kodiert

aber wenn ich so drüber nachdenke:

wenn die Front-Web-Anwendung eine Datei erst über ssh abholen muss, dann wird das Ding verdammt langsam (connect + authentifizierung ist relativ kostspielig)

also am besten beim Start der Anwendung eine SSH connection aufbauen, alles synchronisieren und diese in den application-scope legen

oder gezielt cachen

so wirklich gut ist die Idee IMHO nicht


----------



## joerg3011 (18. Jan 2006)

und wenn ich dir jetzt noch sag, dass die Anwendung dem Configuration Management dienen soll und insgesamt sämtliche Konfigurationsdaten des Servers + sämtlicher Anwendungen auf 3  Windows- und ca. 10 Linux-Servern holen  soll, kriegst du dann nen Lachkrampf? (zumal ich auch noch Programmieranfänger bin)


----------



## Bleiglanz (18. Jan 2006)

das wird auf jeden Fall happig, und ob der Ansatz mit SSH da das Richtige ist - da würd ich noch mal weiterüberlegen...

du musst dich ja dann wahrscheinlich als root auf den Servern einloggen? und dann mit ssh automatisch irgenwelche Kommandos absetzen? alles sehr desasteranfällig

typisches IT Projekt eben


----------



## Dukel (18. Jan 2006)

Bleiglanz hat gesagt.:
			
		

> das wird auf jeden Fall happig, und ob der Ansatz mit SSH da das Richtige ist - da würd ich noch mal weiterüberlegen...
> 
> du musst dich ja dann wahrscheinlich als root auf den Servern einloggen? und dann mit ssh automatisch irgenwelche Kommandos absetzen? alles sehr desasteranfällig
> 
> typisches IT Projekt eben



Deswegen gibts teure Konfigurationsmanagement Software zu kaufen.
Ist dann halt meist für eine bestimmte Software und man braucht dann wieder 10 verschiedene Programme.


----------



## joerg3011 (19. Jan 2006)

@bleiglanz

na toll, jetzt bin ich mal total verunsichert, hast du mir vielleicht nen tip, wie ich das ganze angehen soll

kurz ne ausführlichere beschreibung:
das ganze soll dem konfigurationsmanagement dienen und zwar vorerst für 3  windows server und ca. 10 linux server (später kommen noch weitere hinzu). unsere abteilung hat nur beschränkten zugriff auf diese server, d.h. volle leserechte, welche  befehle  freigegeben sind, weiß ich jetzt auch nicht genau, normalerweise syncen wir nur updates über sudo-befehle. 
die anwendung sollte wie folgt aussehen (bei nicht-machbarkeit auch variationen möglich):
nach start der anwendung eine übersicht über das netzwerk mit einer ampelschaltung, die auskunft gibt, ob anwendungsversionen auf den servern veraltet sind oder der plattenspeicher voll ist, desweiteren die möglichkeit mehrere details bzw. files des jeweiligen servers auszugeben wie z.b  server.xml oder andere konfigurationsfiles der anwendungen. die ampelschaltung sollte eigentlich für alle server stets aktuell sein, deswegen sollten die daten hierfür beim start der anwendung geholt werden, die detailabfrage eines servers kann ohne probleme erst später erfolgen.

wenn das ganze über ssh schwer zu realisieren ist, wird es mit telnet wohl nicht besser sein, falls du (oder jemand anders) ne sinnvolle idee hätten, wie das ganze geschickter zu realisieren ist, wäre ich echt dankbar. wenn nicht, werde ich es mal mit ssh versuchen. ich danke auf jeden fall schon mal allen, die sich die mühe machen, sich darüber gedanken zu machen und @bleiglanz danke für den bisherigen support

gruß jörg


----------



## Bleiglanz (19. Jan 2006)

Echtes Problem sehe ich bei Echtzeit, das wird definitv übel. Dazu fällt mir nix gescheites ein, weil du ja Windows UND Linux server überwachen willst und dich dann "in Echtzeit" mit diesem Server verbinden musst und dort irgendwas abholen...


aber sagen wir 15 Minuten Latenzzeit ist erlaubt:

ich würde auf jedem der zu überwachenden Server billige Cron-Jobs bzw. Windows-Tasks einrichten, die alle 15 Minuten ALLE relevanten Dateien auf deinen "Monitoring" Server rsyncen oder kopieren (und ggf eine Text-Datei mit Statusinformationen mit rüberschicken du df free "ps auxf" etc)

und dann den ganzen Schrott gemütlich mit einer Webanwendung auswerten, die nur auf die Lokale Platte zugreifen muss

Gewisse Live Tests kann man ja immer über leere HTTP Anfragen (kommt 200) oder einen SocketConnect prüfen

BTW: warum server.xml? ein Tomcat oder andere J2EE Server im Einsatz? In dem Fall unbedingt JMX anschauen, damit wär eine echte "Remote" Kontrolle ohne grosses Trara möglich


----------



## joerg3011 (19. Jan 2006)

hört sich mal alles nicht schlecht an, tomcats sind überall drauf, ich werd mich dann mal über jmx schlau machen, sagt mir nämlich gar nichts, genausowenig wie cron jobs

danke 

gruß jörg


----------



## Bleiglanz (19. Jan 2006)

http://mc4j.org/confluence/display/MC4J/Home/


----------



## joerg3011 (19. Jan 2006)

genial, danke!!!!!!!!!!
nur noch eine frage, wir haben teilweise noch tomcats 4.1.24 laufen, werden die auch noch unterstützt? wenn ich richtig gelesen hab, jmx ja, mc4j erst ab 4.1.29. java 1.4.2 dürfte ja kein problem sein, oder?

gruß jörg

edit: ok, habs mir glaub ich selber beantwortet (typische faulheit, erst fragen, dann selber schauen ;-) ), mit unseren standards nehm ich wohl einfach mx4j, ist im tomcat 4.1 implementiert.


----------

