Mac
Vanaf dat ik een fatsoenlijke internet verbinding heb maak ik altijd gebruik van remote managing software. Altijd wel een machine gehad die ik op afstand wilde kunnen bedienen. Ten tijde van de windows machines gebruikte ik Logmein, toen de windows machine vervangen werd door een Mac G4 gebruikte ik Logmein
, Hey, if it ain broken, don fix it.. Maar na verloop van tijd struikelde ik over OpenSsh. SSH, Secure shell, stelt me in staat om een veilige verbinding tussen twee machines te starten, Ik geloof dat het oorspronkelijk van Unix komt. Osx is gebaseerd op Darwin, er zit dus gewoon een linux kernel onder. Op dat moment had ik dus een OSX hackintosh laptop een een Mac g4 als ‘server’ thuis staan. (Server: Sabnzbd als usenet downloader, Postfix als mail server, Samba als fileserver en Vnc gebruikte ik om de machine over te kunnen nemen.) En net zoals ik geen RDP poorten open zet op mijn firewall zet ik de poort (5900) van VNC ook niet open. Maar via SSH zou ik dus de poort voor VNC veilig over internet kunnen tunnelen. Dus ik installeerd OpenSSH op de mac server thuis, ik opende een hoge willekeurige poort op mijn router (XXXX) en liet deze doorzetten naar poort 22 op de Mac. (22 is de standaard ssh poort). En nu verbinden:
Vanuit een prompt op de laptop typte ik in :
ssh MacServerName -p XXXX
,waarbij XXXX die willekeurige hoge poort is die ik op de router had opengezet. En MacServerName de FQDN is waarmee je de machine kunt bereiken. En even later huppelde ik rond in de shell van de Server. Bestanden kopieren en dergelijke, heel handig. En nu de tunnel voor VNC. (Het onderstreepte is de tunnel):
ssh -L 5900:MacServerName:5900 MacServerName -p XXXX
,weer de welkomstprompt op de shell en verder geen verschil. Dat merk je pas als je je VNC client start en connect naar : localhost. De tunnel zet al het verkeer op 5900 door naar de machine waarop je via SSH bent ingelogged en dus neem je deze over. Kortom, met een scriptje verbind je met de machine en met je standaard software kun je de machine overnemen. Logmein gebruikte ik ineens een heel stuk minder.
Ubuntu 
De mac server, op een respectabele leeftijd van meer dan 8 jaar, was uitgerust met een 800 Mhz processor, en daar begon ik wat ‘last’ van te krijgen. 4,7 GB aan data downloaden duurde op de ADSL verbinding ongeveer 70 minuten en het uitpakken van de data op deze machine duurde ongeveer 90 minuten. En met de Ubuntu Installatie op mijn nieuwe laptop had ik die Hackintosh ineens ‘over’. En de installatie van Ubuntu op de nieuwe notebook was zo makkelijk gegaan… Affijn, 45 minuten later had ik geen Hackintosh meer maar een extra Ubuntu 10.10 machine. En weer een halfuur later draaide Sabnzbd als download machine, was gnome mooi aangepast, remote desktop ingeschakeld en was OpenSsh geinstalleerd. Effe testen..
ssh -L 5900:UbuntuServer:5900 UbuntuServer -p XXXX
Wachtwoord ingevuld en hop ik was binnen. Nu de tunnel testen, via de “Werkplek op Afstand” (op mijn laptop heb ik de nederlandse taalpakketten geinstalleerd) vanaf mijn laptop verbonden naar “localhost” en hop, het grafische inlogscherm van de server staat voor mijn neus. En stel nu dat je niet het bureablad wilt overnemen, maar wel applicaties op afstand wilt draaien? Een soort van applicatie streaming? Dat kan ook, let op:
ssh -X -L 5900:UbuntuServer:5900 UbuntuServer -p XXXX
De -X na ssh zorgt ervoor dat de grafische omgeving (Xserver) van je machine op afstand wordt doorgestuurd naar de grafische omgeving op je lokale machine. Pardon? De explorer op gnome heet nautilus. Ik log met bovenstaand commando in op de server (machine op afstand) en typ op de prompt: nautilus. En hop, er wordt een ‘verkenner’ gestart op de machine op afstand maar het scherm draait op de lokale computer. Stel je wilt ‘even’ wat dingen verzetten, kopieren, in een dropbox zetten omdat je dat vergeten was..
In mijn lijstje in een van mijn eerder posts noemde ik virtualbox als mijn nieuwe virtualisatie platform (gratis, niet te zwaar en gebruiksvriendelijk) Stel nou dat je op je Ubuntu machine een Windows systeem virtueel draait en deze heb je in het netwerk (bridged) een eigen IP adress gegeven. En je hebt er RemoteDesktop van windows op ingeschakeld.
ssh -X -L 5900:UbuntuServer:5900 -L 3389:ip-adress-windows-machine:3389 UbuntuServer -p XXXX
Resumerend: Ik werk op afstand (op het lokale netwerk werkt dit natuurlijk ook, maar in mijn geval vervang ik XXXX dan door 22) en log via ssh in op de server. Ik typ in de sessie ‘nautilus’ en deze verschijnt dan op mijn lokale grafische sessie. Ik connect via vnc naar localhost (poort 5900) en ik zie het loginscherm van mijn ubuntu server. Ik start remote desktop en connect ook hier naar localhost en ik log in op de virtuele machine die op ubuntu draait. En dit allemaal vanuit .. maakt niet uit waar..
Certificaten- 1
Nou wist ik dat dit ook allemaal zou moeten kunnen met certificaten in plaats van met wachtwoorden. Dit heb ik uitgedokterd met behulp van een forumpost. Quote: 1. Open a terminal on the client and run the following commands: Code:
$ mkdir -p $HOME/.ssh #if not already there
$ chmod 0700 $HOME/.ssh #if not already OK
$ ssh-keygen -t dsa -f $HOME/.ssh/id_dsa -P ''This should result in two files, $HOME/.ssh/id_dsa (private key) and $HOME/.ssh/id_dsa.pub (public key). The "-P ' ' " part of the last command helps create a key without a password, this is important. 2. Copy $HOME/.ssh/id_dsa.pub to the server. 3.Login to your server via ssh in the normal way. On the server run the following commands: Code:
$ mkdir $HOME/.ssh # if not already there
$ cat id_dsa.pub >> $HOME/.ssh/authorized_keys
$ chmod 0600 $HOME/.ssh/authorized_keys4.Delete the public key file 5. Logout of the server Voordeel? Je kunt vanaf de machine waar je begon altijd onder jouw account inloggen op de machine waar je het afmaakte, ook bijvoorbeeld uit nautilus. Come Again? In nautilus heb je de optie 'Verbinden met server' onder het menu 'Bestand'. Vul hier de naam van je server in en eventueel de poort, laat inlognaam en wachtwoord leeg en connect. Ben je toch een beetje thuis![]()
Certificaten-2
En dat kon dus ook een heeeeel stuk eenvoudiger.. PGP is standaard geinstalleerd op Ubuntu, en daar hoort een pakketje bij, genaamd seahorse. Als je deze, desnoods vanuit een terminal opstart, dan zie je dit:
Zag je de typfout
? Nou als je dit hebt gedaan zonder foutmeldingen dan kun je vanaf dat moment met die machine dus wachtwoordloos inloggen op de ssh server. Cool huh?