Jammer genoeg heeft ssh een paar nadelen, zeker als je het heel erg veel gebruikt om er bijvoorbeeld programma's als CVS of Subversion overheen te tunnelen. Elke keer dat je een verbinding maakt moet je namelijk opnieuw je wachtwoord intikken. Nou ja, tenzij je natuurlijk gebruik maakt van de echte kracht van SSH, namelijk het neerzetten van cryptografische sleutels van machines waarvandaan ingelogd mag worden.

Sleutels

Voor het gebruik van deze sleutels heeft SSH ondersteuning voor public-private key cryptography. Door de publieke sleutel op de server neer te zetten in het bestand $HOME/.ssh/authorized_keys, kan iedereen met de bijpassende privésleutel meteen inloggen. De sleutels scherm je af met een passphrase, waar om gevraagd wordt op het moment dat de sleutel wordt gebruikt. Het verschil met gewone wachtwoord-authenticatie is dat het niet hetzelfde wachtwoord is dat je gebruikt en dat je keys ook kunt delen.

Het nadeel aan deze methode is natuurlijk dat, hoewel je sleutels gebruikt, je nog steeds een passphrase moet intikken. Tenzij je gebruik maakt van sleutels zonder wachtwoord. Keys zonder wachtwoord zijn handig, maar iedereen die dan jouw private sleutel te pakken krijgt kan direct jouw identiteit aannemen en aan de slag. Oftewel, je wilt keys met een wachtwoord, maar je wilt wel dat niet iedereen misbruik kan maken van jouw key.

Agent

Gelukkig is hier een oplossing voor, genaamd "ssh-agent". Dit is een programma dat als een cache optreedt voor SSH sleutels. Op het moment dat een verbinding met een andere server wordt gemaakt, wordt ssh-agent geraadpleegd om te kijken of de juiste key waarmee je kunt inloggen al aanwezig is. Zo ja, dan wordt er ingelogd. Zo nee, dan worden de gebruikelijke manieren afgelopen.

Gebruik je GNOME, dan wordt in sommige distributies ssh-agent automatisch opgestart als je inlogt en kunnen GNOME applicaties via gnome-keyring er gebruik van maken. Het is ook mogelijk dat je zelf nog eerst de ssh-agent moet starten op het moment dat je inlogt. De instantie van ssh-agent kan gevonden worden via de environment. Als je het commando:

env | grep SSH

in je shell intikt als je ssh-agent hebt draaien, dan zie je onder andere waar de socket van ssh-agent staat.

Initieel is de cache van ssh-agent leeg. Je zult de keys eerst toe moeten voegen. Dit doe je met het commando "ssh-add". Als je het zonder argumenten draait, dan zal een aantal standaardbestanden van SSH ingelezen worden. Maak je gebruik van sleutels zonder wachtwoord, dan gebeurt er niets. Als je wel een wachtwoord hebt, dan zul je eerst het wachtwoord van de desbetreffende sleutels in moeten voeren.

Een sleutel toevoegen aan de cache van ssh-agent is simpel:

ssh-add

Bijvoorbeeld:

ssh-add ~/.ssh/id_rsa

Standaard worden de bestanden ~/.ssh/id_rsa, ~/.ssh/id_dsa and ~/.ssh/identity toegevoegd als je ssh-add zonder argumenten draait.

Op het moment dat de sleutel wordt toegevoegd, word je gevraagd om de passphrase van de sleutel te geven.

Elke keer zal ssh nu aan ssh-agent vragen of er een sleutel aanwezig is die matcht. Als je in de configuratie van SSH de optie ForwardAgent aan hebt staan, dan komen de sleutels die je in ssh-agent hebt staan ook beschikbaar voor inlogsessies op andere machines, zonder dat je de sleutels op de andere machines aan ssh-agent hebt moeten toevoegen. Je kunt zo al je sleutels op één plek bewaren. Let er wel op dat ForwardAgent op veel distributies standaard uit staat. In dat geval zul je het expliciet aan moeten zetten.

Blokkeren

Met zo’n constructie bestaat natuurlijk het gevaar dat iemand alles kan doen wat hij wil met jouw sleutels als hij toegang heeft tot je pc, maar ook daar is aan gedacht. Je kunt de agent tijdelijk blokkeren met een wachtwoord. Dit is handig als je bijvoorbeeld even van je bureau weg bent, zodat anderen niet stiekem misbruik kunnen maken van jouw agent. Met het commando:

ssh-add -x

kun je de agent blokkeren. Met het commando:

ssh-add -X

kun je de agent weer deblokkeren.

Al met al is ssh-agent een simpel, veilig en doeltreffend middel om veilig op machines in te loggen, zonder al te veel "gehinderd" te worden door "lastige vragen".

Bron: Techworld