Προς το περιεχόμενο

x-server: Προώθηση όλου του Desktop;


alkisg

Προτεινόμενες αναρτήσεις

Σενάριο:

server με ας πούμε kubuntu,

client ας πούμε με damn small linux.

 

Θέλω να κάνω remote desktop από τον client και να δω τον server. Όχι με vnc αλλά με x-windows forwarding. Αλλά δεν θέλω να τρέξω μία μόνο εφαρμογή (xterm κτλ), θέλω να δω όλο το desktop του server, από τη στιγμή που εμφανίζεται ο kde greeter (login manager), ώστε να κάνω κανονικά login.

 

Το google δεν απέδωσε, καμιά ιδέα; Ο τελικός σκοπός είναι να συνδέονται καμιά 10ριά clients αυτόματα στον server και να δείχνουν την login screen του.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Η προϋπόθεση για να γίνουν όλα αυτά είναι οι clients και ο server να έχουν μεταξύ τους τουλάχιστον 100άρι δίκτυο.

 

Μια διευκρινιστική ερώτηση: Αυτό που θες είναι να δουλεύουν οι (υποθέτω) μαθητές στο server και μετά να κάνουν logout, ή να μπορούν να κάνουν και attach/detach sessions που θα τρέχουν στο background; Υποθέτω ότι (λογικά) ζητάς το πρώτο.

 

Η «παραδοσιακή» λύση για dumb X terminals είναι να σηκώσεις τον XDM στο server μηχάνημα, και να του πεις να δείχνει login screens σε remote X servers (αυτούς των client μηχανημάτων[1]), είτε να ρυθμίσεις τους X-Display Managers των client μηχανημάτων να χρησιμοποιούν XDMCP για να συνδεθούν στο μηχάνημα-server.

 

Μια (πιο ασφαλής) λύση είναι να χρησιμοποιήσεις ssh X Forwarding (ssh -X hostname) και από 'κει να δώσεις π.χ. startkde.

 

Η τρίτη και ίσως πιο εύκολη λύση, είναι να ρίξεις μια ματιά στο LTSP (Linux Terminal Server Project). Είναι απλά μια έτοιμη εφαρμογή των ανωτέρω.

 

Για αρχή ρίξε μια ματιά, και ό,τι απορία έχεις, ευχαριστώς να τη λύσουμε :)

 

Y.Γ.: Δεν έχω δοκιμάσει τίποτα από τα παραπάνω, αλλά θα προσπαθήσω να υλοποιήσω στο σπίτι το XDMCP+KDM/GDM για να σου δώσω περισσότερες πληροφορίες. Αυτό που θέλω να μου πεις μόνο, είναι πόσο «έμπιστο» είναι το δίκτυο που έχεις, από άποψη ασφαλείας και πόσο ευαίσθητα δεδομένα κινούνται πάνω του.

 

[1] Για να μη μπερδέψουμε τα μπούτια μας με το client-server machine role vs client-server s/w role

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Η προϋπόθεση για να γίνουν όλα αυτά είναι οι clients και ο server να έχουν μεταξύ τους τουλάχιστον 100άρι δίκτυο.

Ναι, 100ρι, δοκιμασμένο με edubuntu (LTSP 5) πάει μια χαρά.

 

Μια διευκρινιστική ερώτηση: Αυτό που θες είναι να δουλεύουν οι (υποθέτω) μαθητές στο server και μετά να κάνουν logout, ή να μπορούν να κάνουν και attach/detach sessions που θα τρέχουν στο background; Υποθέτω ότι (λογικά) ζητάς το πρώτο.

Ακριβώς έτσι, το πρώτο.

 

Η τρίτη και ίσως πιο εύκολη λύση, είναι να ρίξεις μια ματιά στο LTSP (Linux Terminal Server Project). Είναι απλά μια έτοιμη εφαρμογή των ανωτέρω.

Με αυτό δουλεύουμε εδώ και κανά δίμηνο, αλλά δεν μου αρέσει σαν αρχιτεκτονική (λογισμικού). Έχει ένα chroot και ότι θες να κάνεις install στους clients το βάζεις εκεί μέσα, επομένως μερικές φορές χρειάζεται διπλά installs (ένα για τον server και ένα για τους clients). Μετά χρειάζεται ltsp-build-clients για να φτιάξει ένα τεράστιο image, γιατί με την 5 έκδοση δεν χρησιμοποιούν πια NFS για λόγους ταχύτητας. Έχει κάποια καλά, π.χ. υποστήριξη local devices, usb και sound αλλά δεν με ενδιαφέρουν μπροστά στο κόστος του administration: τα config αρχεία είναι τελείως ανακατεμένα, άλλα παίρνει από το chroot και άλλα από τον server, κάνει και κάποια symbolic links κατά την εκκίνηση και για να βρεις μια απλή ρύθμιση χρειάζονται μέρες! Μερικές απλές ρυθμίσεις, π.χ. ελληνικό interface στην login screen, δεν τις έχω βρει ακόμα μετά από βδομάδες ψαξίματος...

 

Μια (πιο ασφαλής) λύση είναι να χρησιμοποιήσεις ssh X Forwarding (ssh -X hostname) και από 'κει να δώσεις π.χ. startkde.

Μόλις το δοκίμασα. Δεν ξέρω αν έκανα κάτι λάθος, αλλά το αποτέλεσμα δεν ήταν ικανοποιητικό: το panel του damn small linux παρέμεινε ενώ ο kicker του kde δεν εμφανίστηκε. Πιθανώς να λείπουν κάποιοι δαίμονες στο dsl που τους χρειάζεται το kde, αλλά το χειρότερο ήταν ότι με alt-tab εμφανιζόταν σαν παράθυρο και το damn small linux, οπότε οι μαθητές θα μπλεχτούν αν βλέπουν σε παράθυρο και το τοπικό μηχάνημα...

 

Η «παραδοσιακή» λύση για dumb X terminals είναι να σηκώσεις τον XDM στο server μηχάνημα, και να του πεις να δείχνει login screens σε remote X servers (αυτούς των client μηχανημάτων[1]), είτε να ρυθμίσεις τους X-Display Managers των client μηχανημάτων να χρησιμοποιούν XDMCP για να συνδεθούν στο μηχάνημα-server.

Εδώ σε θέλω μάστορα! :) Αυτά έψαχνα και χάθηκα. Δεν έχω ακόμα καταλάβει τι απαιτείται να έχει φορτωθεί στον client (=x-server) για να εμφανιστεί η login screen του server. Κάπου διάβασα ότι ο ίδιος ο XDM ξεκινάει τα X-Windows, αλλού διάβασα για προβλήματα πολλαπλών συνδέσεων με XDMCP... Δυστυχώς πολλά από τα how-to είναι πριν το 1992, οπότε δεν κατάφερα να βγάλω άκρη!

 

Το τοπικό δίκτυο είναι απομονωμένο, δεν μας ενδιαφέρει η ασφάλεια. Προτιμάμε KDM από XDM γιατί δείχνει και τις φατσούλες δίπλα, ;) αλλά αυτό είναι το λιγότερο...

Υπέθεσε Kubuntu στον server και ότι σε βολεύει (σχετικά ελαφρύ) στους clients (128 RAM έχουν).

 

Να 'σαι καλά!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Χμ, μόλις σκέφτηκα μια καλύτερη λύση:

  • Ο KDM τρέχει τοπικά
  • Κάθε χρήστης που προστίθεται στο σύστημα έχει ένα passphrase protected SSH key. Αυτό το passphrase θα χρησιμοποιηθεί ως password για το login στο σύστημα
  • Το PAM είναι ρυθμισμένο ώστε ο KDM να κάνει login χρησιμοποιώντας το pam_ssh, οπότε εφόσον το login είναι επιτυχές, το κλειδί του χρήστη είναι διαθέσιμο και φορτωμένο στον ssh-agent ώστε να μπορούν να γίνουν password-less logins.
  • Δημιουργούμε και ένα session για τον KDM, το οποίο αντί να καλεί στην startkde, καλεί το `ssh -X server-host /usr/bin/startkde'

Με αυτή τη λύση γλιτώνεις τη φασαρία του XDMCP, με μόνο μειονέκτημα ότι οι χρήστες πρέπει να έχουν local accounts στα client μηχανήματα, και τα κλειδιά όλων των χρηστών πρέπει να βρίσκονται σε όλους τους clients. Πώς σου φαίνεται αυτό, να δοκιμάσω να φτιάξω ένα testbed?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Apoike, με σκοπό να σε παιδέψω όσο το δυνατόν λιγότερο, δώσε μου λίγο χρόνο να δοκιμάσω δυο καινούργια πράγματα που βρήκα (το thinstation και κάποιες undocumented παραμέτρους του ltsp-build-client). Αν δεν δω φως κι από εκεί...

 

Θα σου απαντήσω αύριο-μεθαύριο. Ευχαριστώ! :)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Apoiko, με τον τρόπο αυτό θα ξεκινά το kde στο server για τον x client. Στον client ο χρήστης τι θα βλέπει στην οθόνη του; Θα βλέπει τι γίνεται στον server; Ο δεύτερος που θα πάει να κάνει login; Θα έχει ξεκινήσει το kde. Αν πέσουν 3~4 άτομα δεν θα "γονατίσει" ο server;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

firewalker: το Χ είναι δικτυακό πρωτόκολλο: το client machine τρέχει έναν X-Server, ενώ στο server machine τρέχουν οι εφαρμογές και στέλνουν την έξοδό τους στον X Server του client. Κοινώς, ο client θα βλέπει κανονικά ένα KDE, μόνο που δε θα το τρέχει η δική του CPU, αλλά η CPU του server.

 

Όσο για το φόρτο, εξαρτάται καθαρά από το μηχάνημα που έχεις για server και τις εφαρμογές που πρέπει να σηκωθούν. Φυσικά, αν εχεις 10 άτομα που ανοίγουν firefox και τον κρατάνε ανοιχτο, θες 1 GB μνήμης μόνο για τους firefox.

 

Γι' αυτό το λόγο σε μεγαλύτερα setup έχει νόημα να έχεις "fat" clients, δηλαδή diskless nodes, που απλά παίρνουν τα αρχεία από το server αλλά εκτελούν τα πάντα τοπικά.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

To xhost δεν έχει άμεση σχέση με αυτό που θέλει να κάνει ο alkisg: ελέγχει απλά τα δικαιώματα πρόσβασης των hosts σε έναν X server, και μάλιστα με αφελή τρόπο (host-based authentication). Εδώ θέλουμε user-level authentication και - ει δυνατόν - secure X forwarding (μέσω ssh).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

@firewalker: μέχρι 9 stations δοκίμασα + εγώ στον server, με core 2 duo server με 1 Gb RAM, ο firefox και το openoffice ανοίγουν τάχιστα και μάλιστα περισσεύει μπόλικη RAM ακόμα.

 

Επειδή οι βιβλιοθήκες στο Linux (αλλά και στα Windows) είναι σε shared address space, φορτώνονται μόνο μία φορά. Δηλαδή 10 firefox ανοιχτοί πιάνουν περίπου σαν να έχεις απλά 10 καρτέλες ανοιχτές (λίγο παραπάνω για την ακρίβεια, γιατί data και stack segments είναι χωριστά για κάθε χρήστη).

 

@Red_Phantom: δεν υπάρχει πρόβλημα με το authentication των x-windows , ευτυχώς έχει γράψει ωραίο υπόμνημα ο Apoikos: ssh -Y και ξεμπερδέψαμε. Στα υπόλοιπα κολλάμε...

 

Για fat vs thin clients: το καθένα έχει τα καλά του. Αν π.χ. εγκαταστήσω knoppel στους clients, θα μπορώ να χρησιμοποιήσω το εργαστήριο σε περίπτωση που πέσει για κάποιο λόγο ο server. Όμως τα minimum requirements και οι χρόνοι εκκίνησης ανεβαίνουν δραματικά, ενώ π.χ. με το thinstation οι clients μπορούν να είναι και 486 με 16Mb RAM.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δοκίμασε το http://freenx.berlios.de/

 

Στο http://www.linuxquestions.org/questions/linux-general-1/how-to-connect-to-linux-desktop-without-vnc-456466/page2.html αναφέρει ότι έτρεξε και το KDE.

 

Πάντως με xhost και export DISPLAY τρέχεις X εφαρμογές px Matlab στο μηχάνημα Helios και το interface έμφανίζεται στο μηχάνημα που έχεις κανει export.

http://csci.csusb.edu/dick/samples/remote.html

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Επειδή οι βιβλιοθήκες στο Linux (αλλά και στα Windows) είναι σε shared address space, φορτώνονται μόνο μία φορά. Δηλαδή 10 firefox ανοιχτοί πιάνουν περίπου σαν να έχεις απλά 10 καρτέλες ανοιχτές (λίγο παραπάνω για την ακρίβεια, γιατί data και stack segments είναι χωριστά για κάθε χρήστη).

 

Για πες τι και πως... :-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

 

Ναι, το NX είναι πολύ καλό (έχεις remote X μέσα από DSL), αλλά προορίζεται για διαφορετική χρήση και έχει 2 μειονεκτήματα:

  • Πρέπει στον client να τρέχει ήδη ένα desktop για να φορτώσει τον NX-Client και να του βγάλει (σε παράθυρο) το desktop του άλλου συστήματος
  • Ο μόνος NX client που παίζει αποτελεσματικά είναι closed source και δεν μπορεί να προσαρμοστεί στις ανάγκες του συγκεκριμένου προβλήματος

 

Πάντως με xhost και export DISPLAY τρέχεις X εφαρμογές px Matlab στο μηχάνημα Helios και το interface έμφανίζεται στο μηχάνημα που έχεις κανει export.

http://csci.csusb.edu/dick/samples/remote.html

 

Δεν είπε κανείς ότι δεν παίζει, προφανώς και παίζει, αλλά μαζί με σένα «βλέπει» ό,τι πληκτρολογείς οποιοσδήποτε μέσα στο δίκτυο ;). Επιπλέον οποιοσδήποτε χρήστης του remote μηχανήματος μπορεί να σου πετάξει παράθυρα στον X Server, αφού το xhost κάνει host-based access control. Πολύ καλύτερη και ευκολότερη λύση (ούτε να ανοίγεις θύρες σε firewall, ούτε τίποτα) είναι το X forwarding over SSH (ssh -X ή ssh -Y). Ούτε καν export DISPLAY δε χρειάζεται να κάνεις (το κάνει το SSH για σένα).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν χρειάζεται να κάνεις κάτι ειδικό, γίνεται αυτόματα.

Π.χ. στα Windows μπορεί να τρέξεις πολλές φορές πολλά προγράμματα τα οποία όλα χρησιμοποιούν το msvcrt.dll. Ε, η βιβλιοθήκη θα φορτωθεί μόνο μία φορά, και κάθε επόμενο πρόγραμμα που θα θέλει να τη χρησιμοποιήσει απλά θα την κάνει map στο address space του χωρίς να καταλαμβάνει κι άλλη φυσική RAM. Δεν χρειάζεται να κάνεις κάτι γι' αυτό, το κάνει αυτόματα το λειτουργικό.

 

Επομένως αν πούμε στο περίπου ότι ο server χρειάζεται 400Mb RAM για να τρέξει KDE + Firefox + Openoffice, ο κάθε client χρειάζεται μόνο 50Mb RAM ακόμα για τα ίδια πράγματα, αφού οι βιβλιοθήκες στον server είναι ήδη φορτωμένες...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...