Raffael Geschrieben 5. November 2010 Teilen Geschrieben 5. November 2010 Hallo liebe Fachinformatiker, vorneweg: diese Frage könnte auch in die Netzwerk- oder Betriebssystem-Sparte passen. Wenn sie hier unpassend ist, bitte gerne verschieben. Ich habe folgende Fragestellung: Ich arbeite auf einem WindowsXP-Rechner und implementiere eine Anwendung, die statistische Auswertungen unter Anderem mit der Programmiersprache R auf einem Linux-Rechner ausführt. (Zur Berechnung werden auch reine linux-basierte Programme verwendet, so dass ich mich definitiv auf dem Linux-Server einloggen muss!) Ich werde eine graphische Oberfläche (wahrscheinlich mit Eclipse) implementieren, bei der ich alle nötigen Konfigurationen der Berechnung einstellen werde. Zum Einlesen der Daten, zum Aufrufen der Skripte und zum Rückschreiben von Daten ist es notwendig, dass ich mich auf dem Linux-Server einlogge. So möchte ich in der dieser Oberfläche auch drei Felder vorgeben: IP-Adresse des Servers, Login und Passwort-Feld (bitte hier die Sicherheitsbedenken erstmal aussen vor lassen, von wegen Passwort abhören und so, dieses Problem ist sehr wichtig, aber soll bitte erstmal vernachlässigt werden) Ich baue also eine Remotedesktop-Verbindung zum Linux-Server auf. Wir gehen davon aus, dass ich die IP-Adresse, das Login und das Passwort für den Server habe. Jetzt kommt auch schon die Frage: 1. Wie würdet Ihr dieses Einloggen auf dem LinuxServer realisieren? 2. Welche Methoden bietet mir Java (Die entspr. Klassen & Methoden kenne ich noch nicht) dazu? Über Meinungen und Lösungsvorschläge wäre ich sehr dankbar. Die Fragestellung kann natürlich gerne kritisch hinterfragt werden. Vielen Dank schon mal für Eure Meinungen und liebe Grüße, Raffael Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 5. November 2010 Teilen Geschrieben 5. November 2010 Warum nutzt Du nicht einfach SSH und baust eine Oberfläche, da Du hier im Java Forum gepostest hast, in Java. Sämtliche Authentifizierung kann via Schlüssel erfolgen und muss somit nicht selbst implementiert werden. Der Zugang wird per SSH Konfiguration auf die bestimmten Anwendungen beschränkt und ein eigener Dienst muss nicht programmiert werden Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Raffael Geschrieben 8. November 2010 Autor Teilen Geschrieben 8. November 2010 Genau, die Oberfläche möchte ich in Java programmieren, ich dachte an eine Entwicklung über das Entwicklungstool Eclipse, in der ich die Userdaten eingeben kann. Wenn es heißt "Der Zugang wird per SSH Konfiguration auf die bestimmten Anwendungen beschränkt", wie werden dann die Aufrufe auf dem Server ausgeführt? Die Java-Anwendung startet ja vom lokalen Rechner. Braucht man für das Ausführen dann eine spezielle Methode, um zu sagen, dass man auf der IP, mit der der SSH-Tunnel besteht, etwas starten will? Oder wie wird im Java-Code unterschieden zwischen einem Aufruf eines Programms, das lokal und einem anderen, das auf dem Linux-Server auszuführen ist? Das Aufbauen der SSH-Verbindung könnte ja zB mit so einem Paket durchgeführt werden (Ganymed SSH-2 for Java). Hat da jemand vllt. sogar eine bessere Empfehlung oder, und das würde mich besonders interessieren, bietet Java nicht schon selbst so eine Möglichkeit? Viele Grüße, Raffael Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 8. November 2010 Teilen Geschrieben 8. November 2010 Genau, die Oberfläche möchte ich in Java programmieren, ich dachte an eine Entwicklung über das Entwicklungstool Eclipse, in der ich die Userdaten eingeben kann. Was hat Eclipse und SSH miteinander zu tun? Wenn es heißt "Der Zugang wird per SSH Konfiguration auf die bestimmten Anwendungen beschränkt", wie werden dann die Aufrufe auf dem Server ausgeführt? Informiere Dich über SSH, wenn man über Dein Tool die Kommandos "cd /" und "rm -Rf *" ausführen kann, dann wäre das als root ausgeführt ein Sicherheitsfehler. Zugriff via SSH sollte immer beschränkt werden. Du solltest Dich bevor Du anfängst irgendetwas zu codieren über das SSH Protokoll und dessen konkrete Umsetzung informieren! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Raffael Geschrieben 9. November 2010 Autor Teilen Geschrieben 9. November 2010 Hallo, Was hat Eclipse und SSH miteinander zu tun? Erklär ich gerne. Eclipse soll mein Programmierwerkzeug zur Entwicklung der Software sein. Die Software umfasst unter Anderem auch den Aufbau der SSH-Verbindung. Die Implementierung dieser wird aus einer Bibliothek kommen. Informiere Dich über SSH, wenn man über Dein Tool die Kommandos "cd /" und "rm -Rf *" ausführen kann, dann wäre das als root ausgeführt ein Sicherheitsfehler. Zugriff via SSH sollte immer beschränkt werden. Du solltest Dich bevor Du anfängst irgendetwas zu codieren über das SSH Protokoll und dessen konkrete Umsetzung informieren! Sehr gut. Genau solchen Sicherheitsproblemen möchte ich natürlich aus dem Weg gehen. Um mir ganz bestimmte Informationen zu holen habe ich ja diesen Faden erstellt. Danke. Darum auch meine Frage, wie dann der jeweilige Funktionsaufruf auf dem Server vom Aufruf lokal unterschieden wird. Die SSH-Verbindung wird (aus MindTerm Package, http://www.jcraft.com/jsch/http://linuxmafia.com/pub/java/ISNetworks-MindTerm-1.2.1-SCP3.tar.gz) folgendermaßen aufgebaut: SSHSocketFactory fact = new SSHSocketFactory(sshHost, sshPort, new SSHPasswordAuthenticator(sshUser, sshPassword)); sock = fact.createSocket(host, port); ein Aufruf von zB '/opt/prog/start' auf dem Linux-Server wird dann wie aufgebaut? Bzw. wie unterscheidet sich dieser vom lokalen Aufruf? In etwa so: sock.system('/opt/prog/start') gegen system('/opt/prog/start')? Diese Frage ist für viele sicher zu trivial um ein echtes Problem darzustellen, ich möchte mich nur vorher informieren, bevor ich das ganze System beginne. Ich denke nämlich, dass ich das vorher überblicken muss, bevor ich mich ans Werk machen, so wie flashpixx das schon richtig gesagt hat. Viele Grüße, Raffael Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 9. November 2010 Teilen Geschrieben 9. November 2010 Eclipse soll mein Programmierwerkzeug zur Entwicklung der Software sein. Das beantwortet aber nicht die Frage, was Eclipse mit SSH zu tun hat. Genau solchen Sicherheitsproblemen möchte ich natürlich aus dem Weg gehen. Um mir ganz bestimmte Informationen zu holen habe ich ja diesen Faden erstellt. Dieses hat weder etwas mit Deiner zu entwickelnden Software noch mit Eclipse oder Java zu tun, sondern mit der Konfiguration des SSH Dienstes. Diese Frage ist für viele sicher zu trivial um ein echtes Problem darzustellen, ich möchte mich nur vorher informieren, bevor ich das ganze System beginne. Ich gewinne den Eindruck, dass Du noch nie Netzwerkanwendungen programmiert hast. Auch dass Eclipse rein gar nichts mit der Umsetzung zu tun hat bzw. für Deine Frage irrelevant ist, verstärkt den Eindruck. Bevor Du überhaupt mit so einem Projekt beginnst solltest Du die Basics verstanden haben, d.h. Netzwerkarchitektur und deren konkrete Implementierung. In Deinem Fall solltest Du auch wissen wie ein SSH Server arbeitet und wie dieser installiert und konfiguriert wird. Als weiterer Punkt würde ich anführen, dass SSH immer ein Benutzeraccount zur Authentifizierung braucht. Warum so ein Sicherheistrisiko riskieren, wenn letztendlich nur ein paar Daten ausgetauscht werden müssen. Das ganze lässt sich z.B. über einen Webservice auch via https erledigen, wobei eben SSH nicht notwendig ist. SSH ist letztendlich ein Dienst, der einen verschlüsselten Zugang zu einem System bieten soll, um es zu administrieren bzw damit zu arbeiten. Du willst letztendlich ein Tool zur Fernsteuerung bauen. Man kann die GUI des Unixsystem via X11 und SSH oder mit Hilfe von NX direkt in einen lokal laufenden XServer einbinden und für den User entsteht der Eindruck als arbeite er lokal. Die Anwendung und alles weitere wird aber direkt auf dem entfernten Rechner ausgeführt. Wobei dieses nur passend konfiguriert werden muss und damit Dein Tool überflüssig wäre. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Raffael Geschrieben 10. November 2010 Autor Teilen Geschrieben 10. November 2010 Das beantwortet aber nicht die Frage, was Eclipse mit SSH zu tun hat. Stimmt, denn leider hast Du den Rest der Antwort, der den Zusammenhang erklärt, abgeschnitten. Ich verstehe natürlich, dass man das wissen will. Gerne habe ich dir diese Frage auch beantwortet. Dieses hat weder etwas mit Deiner zu entwickelnden Software noch mit Eclipse oder Java zu tun, sondern mit der Konfiguration des SSH Dienstes.Und die Konfiguration kann ich nicht in der von mir entwickelnden (in Java mit Eclipse) Software impementieren? Das glaube ich bei allem Respekt ehrlich gesagt nicht, aber kann ja sein, dass ich mich da irre. Ich verstehe nicht warum du so über die Entwicklungsplattform diskutieren möchtest. Wenn es dir damit besser geht, kannst du auch gerne annehmen, dass ich ohne Eclipse arbeite, und alles direkt auf Konsole eintippe. Aber in Java soll es dann doch sein. Auch die angesprochene Konfiguration der SSH-Verbindung würde ich (wenn möglich) so regeln. Ich gewinne den Eindruck, dass Du noch nie Netzwerkanwendungen programmiert hast. Auch dass Eclipse rein gar nichts mit der Umsetzung zu tun hat bzw. für Deine Frage irrelevant ist, verstärkt den Eindruck. Bevor Du überhaupt mit so einem Projekt beginnst solltest Du die Basics verstanden haben, d.h. Netzwerkarchitektur und deren konkrete Implementierung. In Deinem Fall solltest Du auch wissen wie ein SSH Server arbeitet und wie dieser installiert und konfiguriert wird. Als weiterer Punkt würde ich anführen, dass SSH immer ein Benutzeraccount zur Authentifizierung braucht. Warum so ein Sicherheistrisiko riskieren, wenn letztendlich nur ein paar Daten ausgetauscht werden müssen. Das ganze lässt sich z.B. über einen Webservice auch via https erledigen, wobei eben SSH nicht notwendig ist. SSH ist letztendlich ein Dienst, der einen verschlüsselten Zugang zu einem System bieten soll, um es zu administrieren bzw damit zu arbeiten. Du willst letztendlich ein Tool zur Fernsteuerung bauen. Man kann die GUI des Unixsystem via X11 und SSH oder mit Hilfe von NX direkt in einen lokal laufenden XServer einbinden und für den User entsteht der Eindruck als arbeite er lokal. Die Anwendung und alles weitere wird aber direkt auf dem entfernten Rechner ausgeführt. Wobei dieses nur passend konfiguriert werden muss und damit Dein Tool überflüssig wäre. Der Eindruck täuscht nicht ganz. Eine SSH-Verbindung habe noch nicht gemacht, aber wenn ich das schon mal gemacht hätte, würde ich auch nicht danach fragen. Wenn ich mit Eclipse arbeite und damit Code entwickle, dann hat es doch etwas mit der Umsetzung zu tun: Es ist das Entwicklungswerkzeug. Ich verstehe nicht so ganz, woran man sich hier stören kann. Wenn du Eclipse nicht magst ist das ja ok, aber man kann mich doch das Werkzeug aussuchen lassen, das ich möchte. Das empfinde ich zumindest so. Vielen Dank für den Rest Deiner Erklärungen und Alternativen! Meine Frage ist damit geklärt Danke für Deine Geduld und Deine Zeit. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 10. November 2010 Teilen Geschrieben 10. November 2010 (bearbeitet) Das glaube ich bei allem Respekt ehrlich gesagt nicht, aber kann ja sein, dass ich mich da irre. Nur root kann die Konfiguration des SSH Dämons ändern, kein anderer User. Der Eindruck täuscht nicht ganz. Eine SSH-Verbindung habe noch nicht gemacht, aber wenn ich das schon mal gemacht hätte, würde ich auch nicht danach fragen. Es geht nicht darum, ob Du schon mal eine SSH Verbindung "gemacht" hast, ich gehe davon aus, dass Du weißt wie man einen SSH Client bedient. Dir fehlt aber ein Verständnis für die Zusammenhänge. Deswegen mein Hinweis, installiere einen Linux Server mit einem OpenSSH Server und konfigurieren einmal diesen, damit Du überhaupt mal ein Verständnis für die Problematik bekommst. Wenn ich mit Eclipse arbeite und damit Code entwickle, dann hat es doch etwas mit der Umsetzung zu tun: Es ist das Entwicklungswerkzeug. Ich verstehe nicht so ganz, woran man sich hier stören kann. Ob Du Deinen Code im Notepad oder Eclipse schreibst, ist mir egal. Es geht nicht um die Diskussion der IDE, sondern darum, dass Du hier fachlich alles zusammen wirfst. Die IDE spielt für Deine Frage überhaupt keine Rolle, aber in allen Deinen Postings beziehst Du Dich darauf. Du beschränkst das Problem darauf "ich will eine Java Anwendung". Das reicht hier aber nicht, denn Du brauchst auch eine Serverkomponente über die Du die Daten anforderst. Bei Dir soll das SSH sein, wobei hier gerade ein Arbeiten mit Passwörtern einfach aus Sicherheitsgründen nicht sinnvoll ist. Eine Serverkomponente muss installiert, konfiguriert und auch gewartet werden und dafür brauchst Du auf einem Unix System nun mal root Rechte. Bevor Du überhaupt beginnst eine Anwendung mit GUI zu realisieren, wäre der erste Schritt zu überlegen, wie Du an die Daten kommst. Und hier muss man direkt auch die Frage stellen, ob eine SSH Verbindung sinnvoll ist, da diese immer mit dem Overhead der Administration des entsprechenden Useraccounts auf dem Unixsystem verbunden ist und dadurch auch automatisch Sicherheitslücken aufweisen können, die z.B. durch Deine GUI ausgenutzt werden können, um Schaden anzurichten. Wer sagt denn, dass nur Deine Anwendung mit dem Unixsystem arbeitet, sobald ich einmal Benutzername und Passwort habe, kann ich mich auch mit einem beliebigen SSH Client direkt am System anmelden und Unfug machen (und es sollte nicht all zu schwer sein, auf dem Rechner auf dem die Anwendung läuft einen Keylogger unterzubringen, der Username und Passwort aus Deiner Anwendung ausliest). Aus diesem Grund komme ich zu der Frage "ist eine SSH Verbindung für das Problem Daten vom Rechner holen eine sinnvolle Wahl" und in meinen Augen ist sie es nicht. Alternativen habe ich genannt. Diese Alternativen setzen natürlich andere Techniken voraus, wobei man hier dann die Frage stellt, muss ein User, der nur Daten vom System abholt (und ggf vorher Daten zur Berechnung hinschickt) überhaupt einen Zugang zum System haben. Ich würde auch das ablehnen, denn wofür !? D.h. aber nun, dass Du Dir zuerst Gedanken machen musst, wie Du die Daten zum Server bzw vom Server hin und her schickst, wenn Du kein SSH nutzt. Zusätzlich müssen die Daten ja auf dem Server durch andere Programme verarbeitet und evtl auch zwischengespeichert werden. Das bedeutet aber letztendlich, dass Deine Problemstellung nicht damit beginnt, wie kannst Du mit Eclipse ein Javaprogramm schreiben, dass einen Server fern steuert, sondern Du beginnst mit dem Rahmenbedingungen, d.h. was brauchst Du zwingend für Anforderungen und welche sind nicht notwendig. Gerade auf Servern sollte man die Angriffsfläche möglichst gering halten, d.h. nicht jeder muss Zugang zum System haben. Da Du unweigerlich auch eine Kommunikation zwischen Deiner GUI Anwendung und dem Server hast, wirst Du Dich letztendlich auch mit dem Thema Netzwerkprogrammierung im weitesten Sinne beschäftigen müssen, d.h. aber auch, dass Du über die Grundlage der Kommunikation in Netzen Wissen haben musst. Du hast hier im Grunde drei Komponenten im System, einmal die GUI, die die Userdaten verarbeitet und darstellt, die Kommunikationsschicht zwischen Client und Server und die Server schickt, die ggf Berechnungen durchführt. Alle drei Schichten sollten so konzipiert (!) werden, dass sie möglichst wenig Angriffsfläche für Missbrauch bieten und ein guter Ansatz ist dabei immer ein minimales Konzept zu entwickeln, d.h. was ist überhaupt notwendig. Gleichzeitig sollte man auf bewährte Standard-Technologien setzen und nicht irgendwas selbst zusammen frickeln. Deshalb solltest Du Dir zuerst ein Konzept erarbeiten, bevor Du mit dem Coding beginnst. Gleichzeit solltest Du - der Übung halber - auch das ganze einmal selbst installieren, damit Du auch siehst, wo evtl Probleme / Schwierigkeiten auftreten. Dein durchdachtes Konzept ist der Einstiegspunkt in das Projekt. Bearbeitet 10. November 2010 von flashpixx Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.