SSH public key authentication on Mac OS X

One of OpenSSH’s great features is ssh public key authentication. For those of you who are as lazy as I am, and don’t want to type in and remember all kinds of different passwords for different hosts, it is the solution.

I’m not going to explain here what public key authentication is and why you would want to use it for increased security. If you want to know (and you should), just read Dave Aaldering’s SSH with Keys HOWTO. What I am going to explain, is how to get it to work seamlessly on Mac OS X.

First, I’m going to explain how to get the authentication to work in a client/server configuration. If you already know how to do this, and are just interested in the Mac OS X specific part, skip to the end :)

Key generation and exchange

Since Mac OS X is just like any other UNIX, this should be basic knowledge.

Generating keys for the client (your Mac)

client:~ user$ mkdir ~/.ssh         # if it doesn't exist
client:~ user$ chmod 700 ~/.ssh
client:~ user$ ssh-keygen -q -f ~/.ssh/id_rsa -t rsa
Enter passphrase (empty for no passphrase): …
Enter same passphrase again: …

This will generate a public/private key pair. Needless to say, the private key (~/.ssh/id_rsa) should be kept private at all times, and the public key (~/.ssh/id_rsa.pub) is meant for distribution. Let’s do that right now.

Distributing the key to the server

In my example, the server is a Linux system. Any other UNIX running OpenSSH will do fine.

First, we copy the key from your Mac to the server using SCP:

client:~ user$ scp ~/.ssh/id_rsa.pub user@server.example.com:~

This will put the key in your homedir.

Next, we SSH to the server, and add our key to the list of authorized keys:

user@server:~$ mkdir ~/.ssh       #if it doesn't exist
user@server:~$ chmod 700 ~/.ssh
user@server:~$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
user@server:~$ chmod 600 ~/.ssh/authorized_keys
user@server:~$ rm ~/id_rsa.pub

Now we have basic public key authentication working. Test it by typing in (on the client):

client:~ user$ ssh -o PreferredAuthentications=publickey server.example.edu

You should be prompted for your passphrase and it should work :)

Integrating into Mac OS X

Having verified that the previous steps worked, we’ve created a situation where instead of all kinds of different passwords, you have to type in a generic passphrase for every new connection. While this certainly is a nice improvement, it still isn’t that easy to use.

Fortunately, Mac OS X already has a great feature for managing your keys: the keychain. The next step is to get this keychain to keep our SSH keys as well.

First, download and install SSHKeychain. This nifty little tool will act as a gateway to Mac OS X’s keychain.

Next, run SSHKeychain, and go into it’s preferences. In the “Environment” tab, check the “Manage (and modify) global environment variables” tickbox. This is required for ssh to be able to find the application later.

In the “SSH Keys” tab, ensure your Key Location is listed (/Users/yourname/.ssh/id_dsa).

For extra convenience, add SSHKeychain to your Login Items. Open “System Preferences”, go to “Accounts” and open the “Login Items” tab.

You will now have to re-login, to make the global variables work and have SSHKeychain popup every time you try to SSH to a server that has your public key!

As a final step, you can finetune Mac OS X’s keychain settings for extra security.

Garantieperikelen

“Vroeger” postte ik nog wel eens wat foto’s vanuit mijn telefoon. Dat doe ik al een tijdje niet meer, want het apparaat heeft een dikke maand geleden helaas de geest gegeven. Ruim binnen de garantieperiode hield eerst het luidsprekertje er mee op en later gaf het apparaat in zijn geheel de geest.

Gelukkig had ik ‘m hier in Enschede gekocht bij de T-For-Telecom, dus kon ik hem eenvoudig terugbrengen om gebruik te maken van mijn garantie. Dat heb ik dus ruime maand geleden gedaan. Een beetje vreemd daarbij vond ik dat ik een formulier in moest vullen dat als de reparatie buiten de garantievoorwaarden van de fabrikant valt, ik een berg service- en administratiekosten moest betalen. Omdat ik zeker was van m’n zaak heb ik daar op dat moment niet zo’n punt van gemaakt. Ze zouden hem opsturen, het zou maximaal drie weken duren en ze zouden me bellen als ‘ie terug was.

Vandaag was het dus meer dan een maand geleden dat mijn defecte telefoon is opgestuurd, maar nog steeds had ik geen telefoontje van de T-For-Telecom mogen ontvangen. Tijd om eens langs te gaan dus.

Eenmaal daar aangekomen, werd duidelijk waarom ze me bij de aankoop van de telefoon zo heftig een peperdure verzekering probeerden aan te smeren. De verkoper zei me letterlijk dat als ik geen verzekering had afgesloten, ik mijn meer dan 400 euro kostende telefoon in de prullenbak kon gooien. Er was schade aan een aantal contactjes op de printplaat en dat werd niet door de fabrieksgarantie gedekt. Voor alle defecten aan andere dingen dan de software moest ik een verzekering hebben afgesloten.

Natuurlijk was ik het daar niet mee eens. Ik mag toch zeker wel verwachten dat een dergelijk duur apparaat bij normaal gebruik minimaal een jaar meegaat. Omdat het nogal druk was in de winkel werd ik verzocht later terug te komen.

Zonder mijn telefoon heb ik de winkel verlaten. Wordt vervolgd…

Gravatars

Het bestaat ondertussen al een tijdje, maar net heb ik het even geïntegreerd in mijn weblog: gravatars. Als je er zelf ééntje hebt aangemaakt op gravatar.com en dan reageert op een weblogpost van me, komt je avatar hieronder te staan :)

Oudpapierarcheologie

Oud-papierIn het studentenhuis waar ik woon wordt het oud-papier van twaalf bewoners (op het moment trouwens maar 10) verzameld in een enorme doos, die in een grijs verleden dienst gedaan moet hebben als verpakkingsmateriaal van een flinke breedbeeldtelevisie. Heerlijk luxe natuurlijk, zo’n grote doos, maar ook wel erg verleidelijk. Het is namelijk wel erg makkelijk om altijd maar papier in die doos te gooien, maar hem maar mondjesmaat te legen als het oud-papier weer eens wordt opgehaald.

Morgen is weer eens zo’n dag dat het papier aan de straat mag. Aangezien onze verzameldoos dermate uit begon te puilen dat er meer papier naast dan in lag, was dit maar eens de gelegenheid om de handen uit de mouwen te steken. Een tochtje naar de supermarkt en een paar flinke kartonnen dozen later was het tijd om eens flink in het papier te duiken. Een tocht die menig archeoloog versteld zou doen staan.

Van nieuwjaarskaarten uit december 2005 tot zakagenda’s voor het collegejaar 2003/2004 en geneesmiddelverpakkingen met bijsluiter, je vindt het allemaal in zo’n doos. Verwonderlijk eigenlijk, als je kijkt hoe paranoïde we tegenwoordig zijn met onze online privacy, dat we nog zo veel informatie over onszelf aan de straat zetten. Met een beetje moeite zou je zo een compleet profiel van me kunnen opstellen, compleet met een archief van (ex-)vriendinnen en kwaaltjes die ik in het afgelopen jaar gehad heb. Gelukkig ben ik toch niet zo interessant ;)

Rare situaties

Vandaag is maar een vreemde dag. Stond ik vanochtend om 9:00 na 3 uur slaap met mijn brakke kop in een smoking bij de Albert Heijn mijn fruitshake af te rekenen, vanmiddag stond ik panisch te doen tegen een aantal universiteits-BHV’ers om een zogenaamd uit de hand gelopen studentenbarbecue (waarbij een ergens-in-de-veertig zijnde universiteitsmedewerker gewond was geraakt, vraag mij niet hoe).

Misschien komt het door het slaapgebrek :P

Kortharig!

Het moest er al een tijdje van komen, hoewel ik er eigenlijk steeds maar tegenop zag: mijn haar is terug in zo’n beetje de enige toestand me nu nog staat, kort! Even wennen, maar wel lekker fris met dit weer. Het lijkt haast wel alsof we de lente overslaan en meteen doorgaan naar de zomer. Mij hoor je niet klagen!

Baby toy or sex toy?

Sexspeeltje of kinderspeelgoed?Altijd al eens afgevraagd of je een speeltje nu bij je kind in de mond moet stoppen, of het toch beter voor ‘s avonds in de slaapkamer kunt bewaren? Doe dan de test!
Ik ben tot de conclusie gekomen dat ik voorlopig nog maar niet aan kinderen moet beginnen :X (3 van de 15 goed is niet echt een monsterscore).

Constateringen…

In de laatste paar dagen ben ik tot een paar constateringen gekomen:

  • Artiesten die hun eigen naam gebruiken in hun nummers zijn per definitie ruk.
  • Koninginnedagbezoekers zijn maar suffe mensen.
  • Van een hete dag en een koude nacht word je snotverkouden.
  • Ik kan niet dansen.

Gelukkig ben ik voor die laatste nu bezig met danslessen, zodat mijn vriendin (die heel lief voor me zorgt voor het één na laatste punt) niet met blauwe tenen door het leven hoeft te gaan :P

Firefox Flicks

Na paginagrote Firefox advertenties, is het nu tijd om de wereld van de bewegende beelden te veroveren: Firefox Flicks!

In het kort: er is een wedstrijd uitgeschreven voor wie de leukste reclamespot voor onze geliefde vuurvos bedenkt. Er komen echt geniale dingen uit :P Mijn favoriet is met stip “Whii”.

American Style – maar dan op z’n Italiaans

Als er bij mij thuis niet gezamenlijk gegeten wordt, wil ik nog wel eens wat lekkers voor mezelf maken, maar als ik om kwart over zes een keer thuis kom en er blijkt niemand te koken, is het echt geen tijd voor culinaire uitsloverij. Dan wandel ik even rustig naar de lokale supermarkt en breng ik voor mezelf iets simpels mee. Zo ook vandaag.

Dit keer had ik eens zin in een pizza en wel zo’n Amerikaanse. Eigenlijk ben ik helemaal niet zo’n fan van diepvriespizza’s en al helemaal niet van die Amerikaanse dingen, maar het is lekker makkelijk en zo’n Amerikaans ding vult bovendien een stuk beter dan zo’n flinterdunne pizza.

Op de terugweg bekijk ik eens de doos van mijn “American Style Pizza Hawaii”. Op de achterkant staat een idyllisch verhaal van “Maestro Pedroli”, hoe hij met zijn familie dineerde onder een olijfboom in Napels en hoe hij daar tot het authentiek Italiaanse recept van deze pizza kwam. Op zijn minst vreemd, ik wist niet dat Hawaii in Italië lag en al helemaal niet dat ze daar ook al aan van die vreemde pizza’s met dikke bodem deden.

Hij ligt nu in de oven, dus over een paar minuten weet ik hoe authentiek Italiaans “American Style” kan zijn.