Vor wenigen Tagen habe ich meinen kleinen Home-Server mit einem neuen System von grundauf neu aufgesetzt. Da ich schliesslich ein fauler Mensch bin und mich es ziemlich nervt auch noch für eine SSH-Sitzung mir ein Passwort zu merken, nutze ich also für so einen Fall die Authentifizierung über Public-Keys. Aber aus welchen Gründen auch immer, es gibt unter Mac OS X leider nicht das Programm ssh-copy-id, um den öffentlichen Teil des Schlüsselpaars auf den gewünschten Host zu kopieren. Stattdessen kann man das aber auch über den klassischen Unix-Weg der kleinen Dinge mit Pipe und Ausgabeumleitung erledigen. Bevor man dies tut, sollte man prüfen ob im Benutzer-Verzeichnis des Zielrechners der Ordner .ssh/ bereits existiert. Wenn nicht, so kann man diesen über die normale SSH-Benutzeranmeldung mit Passwortabfrage unter folgendem Befehl erstellen:
ssh user@server.tld 'mkdir .ssh'
Mit dem folgendem Befehl wird nun der Publik-Key des Schlüsselpaar aus dem lokalem .ssh-Ordner ausgelesen, an den Server umgeleitet und in das dortige .ssh-Verzeichniss eingefügt.
cat .ssh/id_rsa.pub | ssh user@server.tld 'cat >> .ssh/authorized_keys'
Jetzt ist es aber immer noch möglich sich mit dem Passwort anzumelden. Damit man sich nun mit dem Key anmelden kann, setzt man die Optionen
PasswordAuthentication no UsePAM no
in der Konfigurationsdatei des SSH-Servers. Schlussendlich wird der dieser neu gestartet.