X2go
X2Go
Autorid
Martin Lehari, Riho Hiiepuu, Kaarel Kont-Kontson
Versioonide ajalugu
Versioon 1.0 - 15.12.2010
Versioon 1.1 - in progress
Mis on x2go?
x2go on vabavaraline terminal serveri projekt. x2go klientprogrammi on võimalik kasutada erinevatel operatsiooni süsteemidel (Windows, Linux, MacOS).
x2go võimaldab kasutada ka nö. "õhukesi" kliente (thin client). Nõutav on PXE tugi.
Käesoleva töö raames sai kasutatud op. süsteemina Debian GNU/Linux 5.0.7 (Lenny) 32bit versiooni. Katsetatud sai ka Ubuntu serveri ja desktopi väljalaskeid. Kuna X2Go tarkvara on mõeldud toimima ainult puhta Debiani peal, siis osade pakettide paigaldamine ebaõnnestus.
Installeerimine
Eeldused
Toimiv võrguühendus, staatiline IP! Osata kasutadada linuxi käsurida.
x2go Server
Kõigepealt impordime süsteemi x2go repositooriumi GPG võtmed
gpg --keyserver wwwkeys.eu.pgp.net --recv-keys C509840B96F89133 gpg -a --export C509840B96F89133 | apt-key add -
Seejärel lisame x2go repositooriumi aadressi sources.list faili
echo "deb http://x2go.obviously-nice.de/deb/ lenny main" >> /etc/apt/sources.list
PS! Sama asja võib teha ka mõne tekstiredaktoriga, aga sedasi ridade lisamine on lihtsalt kiirem.
Kõige lõpuks uuendame pakkide nimistu
apt-get update
Nüüd kus serveri paigalduseks on kõik eeldused loodud, võime vajalike pakkide paigaldusega jätkata. Esimese hooga paigaldatakse x2go serveri pakid koos SSH failisüsteemi ja PostgreSQL serveriga.
apt-get install x2goserver x2gosessionadministration x2gokdebindings sshfs postgresql
Kui serverisse on paigaldatud ainult baasüsteem, siis lisanduvad paigaldatavate pakettide nimistusse veel mitmed sõltuvused (sh. xorg).
Võimaldame kõigil kasutajatel süsteemi sisse logida
echo "%users ALL=(ALL) NOPASSWD: /usr/bin/x2gopgwrapper " >> /etc/sudoers
Impordime vajaliku andmebaasi
cd /usr/lib/x2go/script/ ./x2gocreatebase.sh
Kõige esimene veateade (dropdb: database removal failed: ERROR: database "x2go_sessions" does not exist) on normaalne ja ei tasu lasta ennast sellest heidutada.
Määrame /dev/fuse failile korrektsed õigused
chown root:fuse /dev/fuse chmod 660 /dev/fuse
LDAP server
Järgmisena paigaldame lokaalse LDAP serveri (vajalik kasutajate autentimiseks).
apt-get install x2goldaptools x2gouseradministration x2gohostadministration x2gosystemadministration x2gogroupadministration x2gomail
LDAP'i paigaldusskriptid hakkavad küsima küsimusi. Vastamiseks võid kasutada vaikeväärtuseid, kuna hilisemad x2go paigaldusskriptid teevad vajalikud seadistused ise ära.
Järgmiseks täiendame hosts faili serveri IP aadressi ja hostname'iga
echo "<serveri_ip> <serveri_hostname>.local <serveri_hostname>" >> /etc/hosts
Genereerime LDAP'i konfiguratsiooni
cd /usr/share/x2goldaptools/config/ ./genconf <LDAP URI> <organisatsiooni_nimi> <riigi_kood> <domeeni_nimi> <netbios_nimi>
Antud töö kirjutamiseks kasutatud testsüsteemi parameetrid olid näiteks sellised:
./genconf x2goserver x2goserver.local ee x2gogroup x2goserver
Enne järgmise paigaldussammu juurde asumist tasuks /etc kataloogist varukoopia teha (koopia tekib sinna kataloogi,kust seda käsku parasjagu käivitatakse).
tar cfvz etc_koopia.tar.gz /etc/
Nimetame pam_ldap.conf faili ringi (hiljem tehakse uus)
mv /etc/pam_ldap.conf /etc/pam_ldap.bak
Kopeeri eelnevalt genereeritud konfifailid /etc kataloogi
cp -r /usr/share/x2goldaptools/config/etc/ /
Järgmiseks liigu skriptide kataloogi...
cd /usr/share/x2goldaptools/script/
...ja käivita makeCA ja makenewcert millede abil genereeritakse sertifikaadid
./makeCA ./makenewcert
Mõlema sertifikaadi korral on küsimustele vastamine vabatahtlik (vaikeväärtused on OK). Ainus koht, kuhu tuleb midagi kirjutada, on Common Name väli - kirjuta sinna serveri hostname.
Tee LDAP serverile restart
/etc/init.d/slapd restart
Järgmiseks impordime kõik kasutajad LDAP'i. Veendu, et oled endiselt skriptide kaustas ja käivita initsystem.
./initsystem
Lisa server LDAP'i puusse
ldap.addserver x2goserver <serveri_ip>
Osad graafilised administreerimistööriistad nõuavad root kasutaja õigused. Kui soovid neid kasutada ilma parooli sisestamata, peaksid genereerima ühe SSH võtmete paari
ssh-keygen -t dsa cd /root/.ssh/ cat id_dsa.pub >>authorized_keys mv id_dsa x2go_dsa
X2Go Thin Client
Esiteks on meil vaja DHCP serverit, TFTP serverit (atftp), NFS kernel serverit ja debootstrap'i
apt-get install dhcp3-server atftpd nfs-kernel-server debootstrap
Järgmiseks loome kausta kliendi jaoks
mkdir /opt/x2gothinclient
Kasutame debootstrap-i et laadida alla Debian Lenny süsteem
debootstrap --arch i386 lenny /opt/x2gothinclient/ http://ftp2.de.debian.org/debian
Teha koopia resolv.conf failist kliendi faili süsteemi jaoks.
cp /etc/resolv.conf /opt/x2gothinclient/etc/resolv.conf
Luua uus interfaces fail kliendi op systeemi jaoks. Fail ise asub kaustas /opt/x2gothinclient/etc/network/. Ava see meelepärase tekstiredaktoriga ja sisesta sinna:
auto lo iface lo inet loopback
Tekitame uued kirjed kliendi hostname ja hosts faili.
echo "x2gothinclient" >> /opt/x2gothinclient/etc/hostname echo "127.0.0.1 localhost" >> /opt/x2gothinclient/etc/hosts
Määrame ära x2goserveri
echo "<serveri_ip> <serveri_hostname>.local <serveri_hostname>" >> /opt/x2gothinclient/etc/hosts
NB!!!! Järgmine osa toimub CHROOT keskkonnas, ole hästi ettevaatlik!
Siseneme chroot keskkonda
chroot /opt/x2gothinclient /bin/bash
Järgmiseks käsk (ei ole kohustuslik, aga aitab jälgida, kummas keskkonnas parasjagu viibid)
PS1='(chroot) '$PS1
Nüüd tuleb mountida failisüsteemid
mount -t proc none /proc mount -t devpts none /dev/pts/
Lisame x2go repositooriumi
echo "deb http://x2go.obviously-nice.de/deb/ lenny main" >>/opt/x2gothinclient/etc/apt/sources.list
Uuendame pakkide nimistut ja paigaldame syslinux, locales ja linux-image-486 pakid
apt-get update apt-get install syslinux locales linux-image-486
Kui tuleb küsimus: Create a symbolic link to current kernel image Yes Kui tuleb küsimus: Do you want to abort now No
Järgnevalt vaatame üle lokaliseerimise seaded.
dpkg-reconfigure locales
/etc/initramfs-tools/initramfs.conf failis peame ära muutma BOOT parameetri väärtuse:
BOOT=nfs
Muutmiseks võid kasutada jällegi meelepärast tekstredaktorit (vi, vim, nano, vms...)
Järgnevalt
update-initramfs -u -v
Installeerime x2goclientsystem'i
apt-get install x2gothinclientsystem
Järgnevat käsku ei tohi väljaspool chroot keskkonda kasutada
./x2gothinclient_install.sh
Lähme chroot keskkonnast välja aga ennem peab maha laadima failisüsteemid mille me peale laadisime.
umount /proc/ umount /dev/pts/
exit
Järgmisesk modida faili /etc/default/atftpd
USE_INETD=false OPTIONS="--daemon --port 69 --tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /tftpboot"
luua uus kaust ning muuta tema õigusi
mkdir /tftpboot chmod 775 /tftpboot
/etc/inetd.conf failis keera tftp kinni. (pane trellid tftp ette)
Peale seda teha restart
/etc/init.d/openbsd-inetd restart /etc/init.d/atftpd restart
Tekitame lingi failide vahel
ln -s /opt/x2gothinclient/vmlinuz /tftpboot/vmlinuz ln -s /opt/x2gothinclient/initrd.img /tftpboot/initrd.img
loo uus kaust ja lisa sinna fail. faili sisu on kirjeldatud all pool.
mkdir /tftpboot/pxelinux.cfg touch /tftpboot/pxelinux.cfg/default
nano /tftpboot/pxelinux.cfg/default
label linux kernel vmlinuz append root=/dev/nfs nfsroot=<x2go_serveri_ip>:/opt/x2gothinclient ro initrd=initrd.img ip=dhcp
Kopeeri järgnev fail /tftpboot/ kausta
cp /opt/x2gothinclient/usr/lib/syslinux/pxelinux.0 /tftpboot/
Järgnevalt me seadistame dhcpd
nano /etc/dhcp3/dhcpd.conf
option domain-name "<serveri_hostname>.local"; option domain-name-servers <x2go_serveri_ip>; # x2go thin client range/group subnet <x2go_serveri_subnet> netmask <x2go_serveri_netmask> { range <aadresside_algus> <aadresside_lõpp>; filename "/pxelinux.0"; next-server <x2go_serveri_ip>; }
Teeme dhcp-le restardi
/etc/init.d/dhcp3-server restart
Lisa /etc/exports faili uus rida
nano /etc/exports
/opt/x2gothinclient <serveri_subnet>/24(ro,async,no_root_squash)
ja lõpuks muudame x2go thin clienti seadeid
nano /opt/x2gothinclient/etc/default/x2gothinclient
x2goclient --pgp-card --ldap="<serveri_ip_aadress>:389:o=<sinu domeeni nimi>,c=local" --external-login=/ramdrive/logins --no-menu --maximize --link=lan --kbd-layout=de --kbd-type=pc105/de --set-kbd=1 --geometry=fullscreen --add-to-known-hosts --read-exports-from=/ramdrive/export --add-to-known-hosts
Ja teeme nfs-kernelile restardi.
/etc/init.d/nfs-kernel-server restart
Kokkuvõte
Mõned tähelepanekud.
Tundub, et tegu on suhteliselt vähetuntud tarkvaraga, kuna probleemide tekkimise korral on abi leidmine küllaltki keeruline.
Tarkvara enda manualides ja wikides oli infot vähe, et ise osasid ettetulnud probleeme lahendada. On kirjeldatud kuidas pakette instaleerida aga edaspidine seadistamine on vähesel määral kirjeldatud.
Juhendites puudus info selle kohta, kuidas sama süsteemi tööle panna ILMA PostgreSQL'i ja LDAP'ita.