Intro:

Van oudsher heeft unix tools voor remote beheer en bestandsbeheer. De bekenste hiervan zijn telnet, ftp en rhost. Echter al deze tools stammen uit de tijd dat het internet nog veilig was, met als gevolg dat de tools niet veilig zijn. Gelukkig zijn we tegenwoordig niet meer van deze tools afhankelijk. Door gebruik te maken van ssh en zijn aanverwante tools wordt remote beheer en bestandsbeheer een stuk gemakkelijker en veiliger.

Voordelen zijn:

De tools:

De daemon:

Basis voor het gehele verhaal is de ssh daemon. Dit is een server programma welke verbindingen accepteerd. Meestal op poort 22, maar dit is configureerbaar. Smoothwall bv wijkt af van de standaard poort.

Client tools:

Dit zijn er vele:

De ssh client:

Dit is waarschijnlijk het belangrijkste programma uit de ssh suite. Het is een vervanger voor het oudere telnet en kan op dezelfde manier gebruikt worden. Met het commando `ssh ` kan verbinding gemaakt worden. Voor kan een decimal dotted ip nummer gebruikt worden of een echte host naam.

De eerste keer dat er verbinding gemaakt wordt zal er gemeld worden dat de key van die host niet bekend is, gevraagd wordt of er echt verbinding gemaakt moet worden. Indien de verbinding doorgezet wordt, dan zal de key van die host opgeslagen worden in het bestand [HOME]/.ssh/known_hosts. In het vervolg zal de key van de host vergeleken worden met de key die in dat bestand is opgeslagen. Deze vraag wordt dus eenmalig gesteld. Indien de key om wat voor reden dan ook verandert, dan zal vrebinden niet meer mogelijk zijn. In dat geval moet de key verwijdert worden uit het bestand [HOME]/.ssh/known_hosts.

Vervolgens zal je jezelf als gebruiker moeten authoriseren. Bij een eerste verbinding zal dit vrijwel altijd met een wachtwoord moeten. Dat dit ook anders kan zullen we zo zien.

De gebruikers naam die standaart gebruikt wordt is dezelfde als waarmee je aangemeld bent. Dit is niet altijd even handig. Om als een andere gebruiker aan te melden geef je het commando `ssh <user@host>` of `ssh <host> -l <user>`. Voor de <host> gelden dezelfde voorwaarden als in het vorige voorbeeld. De <user> moet een op de <host> geldige gebruiker zijn.

Uiteindelijk zal op de remote host een shell geopend worden.

Het scp commando:

Met het scp commando kunnen bestanden gekopieerd worden van en naar remote hosts. Het commando `scp fu bar:/home/user` zal het bestand "fu" kopieeren naar de directorie "/home/user" van de host "bar". Maar je kunt ook kopieeren van remote naar local uiteraard. De werking is ongeveer gelijk aan het normale "cp" commando, met de toevoeging van "host:" om de remote host aan te duiden.

Ssh zonder wachtwoord:

Allemaal leuk en aardig, maar het kan nog leuker.

Door gebruik te maken van een private en public key kan de gebruikers authorisatie plaats vinden zonder dat er om een wachtwoord gevraagd zal worden. Hietvoor is enig voorbereiding noodzakelijk.

Geef het commando `ssh-keygen -t rsa` of `ssh-keygen -t dsa` om een set public/private keys te maken. In het eerste geval zal een rsa key gemaakt worden, in het tweede geval een dsa key. Een key paar van een bepaald type moet je slechts eenmalig aanmaken.

Het programma zal nu eerst vragen waar hij de keys op dient te slaan. Mits je een goede reden hebt om van de standaart lokatie af te wijken kun je het beste het voorgestelde pad aanvaarden. Vervolgens zal om een passphrase gevraagd worden. Deze moet blanco gelaten worden, anders zal er bij het aanmelden om de passphrase gevraagt worden. En dat is nu juist niet de bedoeling.

In de directorie [HOME]/.ssh zullen nu 2 bestanden staan; id_dsa en id_dsa.pub (of id_rsa en id_rsa.pub natuurlijk). Het bestand met de extentie .pub is de public key.

De public key moet nu geplaatst worden op de remote host. Dit kunnen we nu dus doen met het commando `scp ~/.ssh/id_rsa.pub remote:~`. Na het gebruikelijke authoriseren zal id_rsa.pub gekopieerd worden naar je home map op de remote host.

Als laatste moet de public key geplaatst worden in een bestand op de remote host. Open met ssh een shell op de remote host, als het goed is zal dit de laatste keer zijn dat je je met een wachtwoord zal moeten authoriseren. Verzeker je ervan dat op de remote host een directie ~/.shh bestaat en geef daarna het volgende commando: `cat ~/id_rsa.pub >> ~/.ssh/authorized_keys2`. Cat zal de inhoud van id_rsa.pub nu toevoegen aan ~/.ssh/authorized_keys2 of als dat bestand niet bestaat dit bestand aanmaken.

De naam van het bestand waar de public key in moet staan moet je misschien een beetje mee experimenteren. Voor SSH2 is dit authorized_keys2, voor SSH1 is het authorized_keys. Vreemd genoeg moet je voor sirius (nedlinux.nl) een SS1 opzet kiezen terwijl sirius wel degelijk SSH2 gebruikt

Je kunt nu gaan testen of alles werkt. Log uit op de remote host met `exit` en log direct weer aan met `ssh remote`. Als alles goed gegaan is wordt er niet meer om een wachtwoord gevraagt.

Het bestand id_rsa.pub wat nog in je home staat op de remote heeft verder geen zin meer en kan/moet verwijdert worden. Op je lokale systeem bewaar je dat bestand natuurlijk.

Aangezien je je ssh setup moet beschermen voor oneigelijke toegang moet je op alle systemen waar keys van je voorkomen zorgen dat de beveiliging goed ingesteld staat. De directorie ~/.ssh moet de permissies 700 hebben (chmod 700 ~/.shh) en de bestanden in die directorie 600 (chmod 600 ~/.shh/*).