SSH

Uit De Vliegende Brigade
Ga naar: navigatie, zoeken

Key pair-authenticatie - Opzetten

Op deze computer zijn sleutels aangemaakt

Tot eind 2014 logde ik in op m'n vps mbv. inlognaam en wachtwoord. Vanaf eind 2014 maak ik gebruik van key pair authentication: Authenticatie vindt plaats middels public key encryption op basis van de computer waarmee ik inlog. Dat heeft twee voordelen:

  • Dan hoef ik bij inloggen meestal nog maar één keer per sessie een wachtwoord op te geven
  • Veiliger: Alleen bepaalde computers kunnen inloggen.

SSH-sleutels aanmaken

Kijk of er een map ~/.ssh is met daarin deze bestanden:

  • id_rsa Privésleutel
  • id_rsa.pub - Publieke sleutel

Als deze er niet zijn, genereer ze dan als volgt:

ssh-keygen

Publieke sleutel uploaden naar de vps

Upload de publieke sleutel. Bv.:

scp ~/.ssh/id_rsa.pub dvb-02:

Configuratie voltooien

Log in op de vps en voltooi de configuratie:

mkdir .ssh
mv id_rsa.pub .ssh/authorized_keys
chown -R inlognaam:inlognaam .ssh
chmod 700 .ssh
chmod 600 .ssh/authorized_keys

Test

Test of dit werkt door in te loggen op de gebruikelijke manier. Mijn werkstation vraagt via een pop-up scherm om een wachtwoord, en dat blijkt het wachtwoord op de server te zijn. Daarna kan ik probleemloos inloggen, dus zonder en wachtwoord op te geven via de terminal.

SSH-wachtwoord-authenticatie & root-login uitzetten

Ik kan nu inloggen middels public key authentication vanaf drie computers. Inloggen mbv. een loginnaam en wachtwoord, zet ik daarom uit. Handelingen op de betreffende servers:

Bewerk het sshd-configuratiebestand:

sudo vim /etc/ssh/sshd_config

En voeg toe/verander:

PasswordAuthentication no

Schakel root-login uit middels:

PermitRootLogin no

Herstart de ssh-deamon middels

sudo service ssh restart

En test vanaf een werkstation middels:

ssh fantasienaam@dvb-02

en dit geeft foutmelding

Permission denied (publickey).

SSH-sleutel toevoegen - Loginnaam/wachtwoord-situatie

  • Situatie: Inloggen gaat via loginnaam en wachtwoord. Ik wil nu vanaf een tweede computer toegang hebben tot de server zonder inloggen
  • Te doen: Ik moet de publieke sleutel van dit werkstation toevoegen aan ~/.ssh/authorized.keys.

Dat kan uiteraard middels scp of anders kopiëren en plakken, maar het kan veel mooier via het dedicated commando ssh-copy-id. Zie deze sessie:

ssh-copy-id dvb1
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
strompf@dvb1's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'dvb1'"
and check to make sure that only the key(s) you wanted were added.

strompf@blackbox-2014 ~/.ssh $ ssh dvb1
Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.13.0-37-generic x86_64)

Er staan nu inderdaad twee sleutels in ~/.ssh/authorized.keys:

ssh-rsa AAAAB4NzaC1yc2EAAAADAQABAAABAQDbSWnEiJEDXSahI5HRyGmPjSublahblahblahJAQABAAABAQDbSWnEiJEDXSahI5HRyGmPjSuAQABAAABAQDbSWnEiJEDXSahI5HRyGmPjSu
AQABAAABAQDbSWnEiJEDXSahI5HRyGmPjSuAQABAAABAQDbSWnEiJEDXSahI5HRyGmPjSuAQABAAABAQDbSWnEiJEDXSahI5HRyGmPjSuAQABAAABAQDbSWnEiJEDXSahI5HRyGmPjSuAQABAA
ABAQDbSWnEiJEDXSahI5HRyGmPjSuAQABAAABAQDbSWnEiJEDXSahI5HRyGmPjSuAQABAAABAQDbSWnEiJEDXSahI5HRyGmPjSuAQABAAABAQDbSWnEiJEDXSahI5HRyGmPjSuAQABAAABAQDb
SWnEiJEDXSahI5HRyGmPjSuAQABAAABAQDbSWnEiJEDXSahI5HRyGmPjSu strompf@Hiero
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDWANi6MEgblahblahBAQDWANi6MEgblahblahBAQDWANi6MEgblahblahBAQDWANi6MEgblahblahBAQDWANi6MEgblahblahBAQDWANi6ME
gblahblahBAQDWANi6MEgblahblahBAQDWANi6MEgblahblahBAQDWANi6MEgblahblahBAQDWANi6MEgblahblahBAQDWANi6MEgblahblahBAQDWANi6MEgblahblahBAQDWANi6MEgblahb
BAQDWANi6MEgblahblahBAQDWANi6MEgblahblahBAQDWANi6MEgblahblahBAQDWANi6MEgblahblahBAQDWANi6MEgblahblahBAQDWANi6MEgblahblahBAQDWANi6MEgblahblahBAQDWA
Nifdfdsfdsfdsfds6MEgblahblahlahBAQDWANi6MEgblahblah strompf@blackbox-2014

Je kunt zien dat dit publieke sleutels betreffen, want ze beginnen met ssh-rsa AAAAB3. Echte sleutels hebben trouwens niet zo vaak de tekenreeks blahblahblah in zich.

SSH-sleutel toevoegen - PKE-situatie

Maar hoe voeg je een computer toe aan een situtatie waarbij er al gebruik wordt gemaakt van public key encryption? Ik vermoed dat er in ieder geval twee opties zijn:

  1. PKE uitzetten, sleutel toevoegen, PKE aanzetten
  2. Sleutel toevoegen via een computer die al is geauthoriseerd → Dit is wat ik doe.

Bronnen