ssh automatisch inloggen

Zo, weer een stukje verder met het regelwerk. Op het hoefnix forum van Henk van de Kamer vond ik een stukje over het automatisch inloggen met ssh. Dit met behulp van een keypair.

xxx:~$ cd .ssh

xxx:~/.ssh$ ssh-keygen -f {Keynaam} -t rsa -N ''

xxx:~/.ssh$ cat {Keynaam}.pub | ssh inlognaam@hostnaam 'mkdir -m 700 -p .ssh; cat >> .ssh/authorized_keys'

xxx:~/.ssh$ ssh -i {Keynaam} inlognaam@hostnaam

Naast het aanmaken van een keypair heb ik ook nog een aantal aliassen aangemaakt in mijn .bashrc zodat ik niet van elke machine de login, password en ip-adres of hostname hoef te onthouden.

alias sshalias='ssh -i ~/.ssh/{Keynaam} loginnaam@hostnaam'

In bovenstaande code stukken heb ik een aantal waarden veranderd.

  • {Keynaam}: De naam die je het keypair geeft
  • inlognaam: lijkt me duidelijk
  • hostnaam: dns-naam of ip adres van de machine waarnaar je wil connecten
  • sshalias: Het commando waarmee je de login kunt doen op die machine. Als je meerdere aliassen maakt moeten dit dus ook meerdere namen zijn.

Na het aanpassen van .bashrc zul je deze opnieuw moeten inladen om de wijzigingen actief te maken. Dat kan door het opnieuw inloggen maar dit gaat iets vlotter:

Athlan:~# source .bashrc

Let wel, dit is een handig hulpmiddel maar ook potentieel gevaarlijk. Doe dit dus alleen op een machine waarvan je het vertrouwen hebt dat ongewensten hierbij kunnen. Mijn werksysteem thuis vertrouw ik er in elk geval wel mee.

Dit stukje wordt ook geplaatst in de rubriek scripts. Het is namelijk niet alleen handig voor het inloggen met ssh, maar kan ook in scripts gebruikt worden om bepaalde taken op een andere machine uit te voeren. Denk bijvoorbeeld aan de backup.

Backup script

Backup was 1 van de meest belangrijke dingen die ik nog niet geregeld had. Ik heb nu een script overgenomen vanaf de site van Henk van de Kamer.

#!/bin/bash
# Aanpassingen:         Marcel Dijkerman
#
#       * MD 2008-02-26 Bestandslocatie's gewijzigd
#
# Original Author:      Henk van de Kamer (henk@vandekamer.nscom)
# Created:              08-02-2006
# Modified:             09-02-2006
#
# Algemene variabelen
#
pass="--password=geheim"

# Maak juiste back-up, 1e van de maand full, rest van de dagen een differential
#
cd /backup
if [ `date -d 'yesterday' +%-d` -eq 1 ]; then
  date > lastfull.txt
  tar -czf full.tgz /var/www/
  mysqldump --protocol=tcp --skip-opt $pass -A | gzip -9 > fulldb.gz
else
  tar -czf diff.tgz --newer "`cat lastfull.txt`" /var/www
  mysqldump --protocol=tcp --skip-opt $pass -A > diffdb
  zcat fulldb.gz | diff -cbB - diffdb | gzip -9 > diffdb.gz
  rm diffdb
fi

Uiteraard zijn de bestandslocatie’s van hem anders dus die zijn veranderd.

Meteen dit script ook maar toegevoegd in de crontab op een nachtelijk uur zodat ik niet alsnog een geautomatisch ding handmatig hoef te starten.

Na het toevoegen van dit berichtje kan ik meteen testen of het geheel naar behoren werkt.

Op het wensenlijstje staat nu nog het automagisch veranderen van de namen van de backupbestanden zodat daar een datum of weeknummer instaat en het geheel vervolgens offsite neerzetten. Ik heb op zich toegang tot de server van een vriend van me en die wil me daar vast de ruimte voor vrijmaken. Ik kan dan meteen de wederdienst voor hem bewijzen.