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.

Update script

Het eerste in de verzameling scripts. Mijn to-do lijstje wat enkel nog in mijn hoofd zit had dit nog op het programma staan. Op de site van Henk van de Kamer kwam ik een update script tegen waarmee een aptitude upgrade run gesimuleerd wordt. Als er dan updates klaar staan dan wordt er een mailtje verzonden zodat je de update kunt starten.

Hieronder vindt je het script wat ik van hem geleend heb. Voor mijn eigen referentie heb ik hier de kopie ervan bewaart:

#!/bin/bash

# Simuleer een upgrade
#
cd ~/scripts
aptitude update >/dev/null
aptitude -y -s upgrade | sed -re '/ded\.$/,$ d' -e '/led:$/,$ d' -e '1,/ded:$/ d' > mailfile
if [ -s mailfile ]; then
  cat mailfile | mail -s "`hostname -s` wil update" ********@********.nl
fi
rm mailfile

Uiteraard horen er andere tekens op de plek van de sterretjes die je ziet. Ik heb om spam te voorkomen mijn mailadres verborgen.

Het script doet bij het aanroepen wel iets, er wordt namelijk zowiezo een mailfile aangemaakt. Tot op heden heb ik nog geen update hoeven installeren dus of ik een mail krijg moet ik nog even afwachten. Het mailen zelf heb ik al wel getest dus daar zal het niet aan liggen.

Tijd

Vandaag kwam ik erachter dat ik om 10 uur ’s avonds al voor de volgende dag aan het posten was. Ergens klopt er iets niet. Toch maar even de tijd goed zetten.

Je kan de tijd van de server natuurlijk handmatig instellen. Maar uiteindelijk zal de tijd gaan verlopen. Het automatiseren hiervan is dus handiger. Hiervoor installeer ik de pakketten ntp en ntpdate

Arkon:~# aptitude install ntp ntpdate

Als alles goed gaat dan wordt de NTP service na de installatie automatisch gestart. We kunnen dit controleren met het volgende commande:

Arkon:~# ntpq -p

Dit commando draait een NTP query en de optie -p zorgt ervoor dat er een lijst van de servers geprint wordt die in /etc/ntp.conf genoemd worden. Ook laat het van deze servers de status zien.

Voor de zekerheid nog even de tijdzone controleren en/of goedzetten met:

Arkon:~# tzconfig
Your current time zone is set to Europe/Amsterdam
Do you want to change that? [n]: n
Your time zone will not be changed

En zoals je ziet staat mijn tijdzone prima aangezien ik in Nederland woon en daar ook mijn server heb staan.

Als laatste met date nog even kijken of de aanpassingen succesvol waren:

Arkon:~# date
Sat Feb 23 23:02:26 CET 2008

En ook dat klopt, CET oftewel Central European Time en de juiste tijd ook nog eens.

Vanaf nu zal het tijdstip wat er bij mijn blogposts staat dus ook werkelijk kloppen.

Nieuw theme wp-multiflex-3

Na een redelijke zoektocht heb ik eindelijk een thema gevonden wat me wel past. Uiteraard zal ik na verloop van tijd het thema wel bijschaven maar voor nu is het al heel wat.

Ik heb het thema gevonden op WordPress Themes.nl en had gedacht dat ik er dan helemaal klaar mee zou zijn. Meteen in het nederlands dus. Helaas bleek dit een illusie… Een aantal pagina’s konden namelijk niet eens meer geladen worden waardoor de enkele topics inclusief reacties niet meer te zien waren.

Vervolgens heb ik het origineel op Webgazette.co.uk opgehaald om vervolgens de verschillen eens na te pluizen.

Arkon:~$ diff -crN wp-multiflex-3-nl/ wp-multiflex-3/ > wp-multiflex-3-nl.patch

Deze verschillen heb ik vervolgens handmatig nageplozen en elk bestand met de hand aangepast. Hierdoor kwam ik erachter dat de vertalers van WordPress Themes.nl het niet zo heel nauw genomen hebben met de vertaling. Het is namelijk niet handig om de commentaren in de bronbestanden te vertalen. Het is al helemaal niet goed om ook de variabelen te vertalen en dit maar gedeeltelijk te doen. Vandaar ook het probleem met het laden van de pagina’s.

Ook hebben ze botweg het bestand footer.php aangepast door de oorspronkelijke maker van het thema weg te laten. Niet heel netjes, dit heb ik dus hersteld. Omdat ik eigenlijk het hele thema opnieuw vertaald en gecontroleerd heb is de referentie naar WordPress Themes.nl volledig uit de footer verdwenen. Als ze zelf geen credits willen afgeven dan zullen ze het ook niet krijgen ook.

Als laatste was er nog een probleem met de weergave van de tijd. Hiervoor hebben ze de functie

Als opschoning nog even een patch andersom maken zodat ik bij een eventuele nieuwe installatie dit process niet nogmaals hoef door te gaan:

Arkon:~$ diff -crN wp-multiflex-3/ wp-multiflex-3-nl/ > wp-multiflex-3_v1-3-NL.patch

Deze patch is te downloaden: wp-multiflex-3_v1-3-NL.patch

Eerdaags nog even de oorspronkelijke auteur van dit thema inlichten over mijn aanpassing.

Fail2ban

Naar aanleiding van de Problemen Arkon (4) heb ik vandaag een volautomatisch blockprogramma geinstalleerd. De keuze is gevallen op fail2ban. Waarom zul je denken? Ik had het namelijk de vorige keer over snort en snortblock. Snort is inderdaad een intrusion detection systeem wat al een behoorlijke tijd aan de weg timmert. Blokkeer mogelijkheden zitten er niet in en snortblock was een shell script wat iemand van het Freesco support forum in elkaar geknutseld heeft. In hoevere dit bijgehouden wordt weet ik niet, dus vandaar dat ik op zoek ben gegaan naar een vervanger. Uiteindelijk kwam ik uit op fail2ban als enkel pakket wat zowel het detecteren als het blokkeren voor zijn rekening neemt. Continue reading “Fail2ban”

WordPress weergave code (2)

Ik heb eindelijk de codesegmenten op orde. Door het volgende stukje aan de pre tag te hangen in het css bestand wordt er bij het gebruik van de <pre></pre> tags netjes een blok omheen gezet waarbij er in de meeste browsers een scrollbar verschijnt als de regels te lang zijn. Bij browsers die de overflow: auto niet snappen wordt vervolgens de scrollbar weggelaten maar loopt de tekst niet door.

pre {
display: block;
overflow: auto;
overflow-x: hidden;
}