ssh veiliger maken: alleen keyfile, geen interactive login

Thursday 28 April 2011, 22:26:00 | mac/osx

sshd op Mac OS X heeft standaard alleen maar authenticatie via interactive login (username+password).

Het is een stuk veiliger om dat compleet uit te schakelen en strikt gebruik te maken van ssh keyfiles. Bijkomend voordeel is dat het inloggen sneller gaat omdat de authorisatie automatisch verloopt en geen username+password entry meer nodig heeft.

Hoewel sshd redelijk lijkt op hoe het op Linux werkt, zijn er toch wat subtiele verschillen, vandaar hieronder een stappenplan van hoe ik het gedaan heb om het werkend te krijgen:

  1. Op de machine waarvanaf je wilt connecten (client):
    $ ssh-keygen -t dsa
    Dit maakt een dsa private en public key aan in ~/.ssh/id_dsa en ~/.ssh/id_dsa.pub. Geef geen passphrase op (gewoon 2x enter). Niet nodig als je dit al een keer eerder gedaan hebt (want dan overschrijft hij de bestaande keys)
  2. Op de machine waarheen je wilt connecten (de Mac OS X bak):
    • Copy id_dsa.pub van de client naar ~/.ssh/authorized_keys
    • chmod 0600 ~/.ssh/authorized_keys
    • maak de volgende settings in /etc/sshd_config
      Protocol 2
      PermitRootLogin no
      PubkeyAuthentication yes
      PasswordAuthentication no
      PermitEmptyPasswords no
      ChallengeResponseAuthentication no

      Wees zorgvuldig want als je iets per ongeluk op yes laat staan blijft de interactive logon mogelijk gewoon actief.

    • Restart sshd daemon:

      cd /System/Library/LaunchDaemons
      sudo launchctl unload ssh.plist; sudo launchctl load ssh.plist

People have replied:

Irmen de Jong

2014-05-24 01:26:00

(!) Merk op dat na een upgrade van OS X deze configuratie gereset lijkt te zijn. Even controleren na een upgrade dus!