SSH – Keys und Agent

SSH gehoert fuer mich zum taeglich Brot. Gefuehlte 1.000.000 mal taeglich baue ich Verbindungen zu irgendwelchen Servern auf, mache dort etwas, baue die Verbindung wieder ab usw… Etwas was mir mein Leben dabei sehr stark erleichtert ist die ~/.ssh/config in der ich fuer die entsprechenden Server die Voreinstellungen hinterlegt habe. Vor vielen Jahren hatte ich darueber bereits hier auf dem Blog geschrieben.

Authentifizierung ueber Keys ist ein weiteres Thema das das Leben sehr viel erleichtern kann. Deswegen hier kurz was dazu geschrieben. Als erstes benoetigt man einen Key. Der wird mit dem folgenden Befehl erzeugt:

ssh-keygen -t dsa

Dabei wird zur Eingabe eines Passworts aufgefordert, wenn man nicht sehr triftige Gruende dagegen hat sollte man das auch tun. Als zweites muss der public Key auf den betreffenden Server kopiert werden, z.B.:

scp ~/.ssh/id_dsa.pub username@example.net:/home/username/.ssh/authorized_keys2

Nun kann ich mich schon mit

ssh username@example.com

ueber den Key (mit dem Passwort des Keys) authentifizieren. Noch einfacher wird es jedoch, wenn man diese Identity dem SSH-Agent mitteilt. Das passiert mit dem Befehl:

ssh-add

Nach der Eingabe des Passworts fuer den Key uebernimmt der Agent alles weitere fuer einen. Man kann sich nun mit dem Key ohne Angabe des Passworts an dem Server anmelden, bis der Agent neu gestartet wird.

Natuerlich kann man auch mehr als einen Key haben, z.B. um private und dienstliche Sachen voneinander zu trennen:

ssh-keygen -t dsa .ssh/work
ssh-add .ssh/work

Die aktiven Identitys kann man sich uebrigens mit

ssh-add -l

anzeigen lassen

Eintrag aus bash History loeschen

Wie oft ist es mir schon passiert, dass ich ein sudo su gefolgt von einem Passwort eingegeben hatte und dann war der sudo su wegen eines zu vorigen erfolgreichen Eingebens bereits ohne Passworteingabe erfolgreich und das Passwort stand in der bash history. Gefuehlte 1000000000 mal. Den Befehl nun aus der bash history zu loeschen kann man auf unterschiedliche Weisen tun. Das schnellste ist sicherlich ein

rm ~/.bash_history

womit man aber auch gleich alles verliert.

Das zweite was man machen kann ist die Datei mit dem Editor seiner Wahl zu oeffnen, die entsprechende Zeile loeschen, abspeichern, und ggfs. erstelle Sicherungskopien von der Datei (wie z.B. die von joe gemachte .bash_history~) zu loeschen.

Der dritte und wohl bequemste Weg ist mit dem Befehl history. Dieser zeigt die bash History an und mit dem Schalter -d kann man daraus loeschen:

jan@desktop:~$ history 5
  504  sudo aptitude safe-upgrade
  505  vim foobar
  506  sudo su
  507  mysecretpassword
  508  history 5
jan@desktop:~$ history -d 507
jan@desktop:~$ history 5
  505  vim foobar
  506  sudo su
  507  history 5
  508  history -d 507
  509  history 5
jan@desktop:~$

ISO mit Grub2 booten

Eine coole neue Funktion von Grub2 ist es, dass man ISO Dateien direkt booten kann. Dieses ist sogar recht einfach implementiert. Ich habe bei mir auf meinem System ein Verzeichnis

/iso

angelegt und dort z.B. die grml64_2010.12.iso abgelegt. Nach dem Hinzuefuegen des folgenden Eintrags in die /etc/grub.d/40custom

menuentry "GRML 2010.12 64bit ISO" {
  loopback loop (hd0,msdos5)/iso/grml64_2010.12.iso
  linux    (loop)/boot/grml64/linux26 findiso=/iso/grml64_2010.12.iso boot=live quiet vga=791 noeject noprompt ignore_bootid
  initrd   (loop)/boot/grml64/initrd.gz
}

musste nur noch ein update-grub2 aufgerufen werden und schon konnte ich in meine Bootmenue die ISO Datei auswaehlen und das System starten. Wer sein System nicht wie ich in der ersten logischen Partition hat, sondern z.B. in der ersten primaeren muss natuerlich ein (hd0,0) angeben.

Ich finde das recht praktisch um auszuprobieren wie sich eine LiveCD auf dem eigenen System verhaelt oder eine alternative Distro auszuprobieren, ohne dass man einen Rohling verbraucht oder seinen USB-Stick ueberschreibt.

Wer das ganze noch Passwortgeschuetzt haben moechte muss noch zwei Kleinigkeiten hinzufuegen. Zum einen ganz  am Ende der /etc/grub.d/00_header die folgenden Zeilen einfuegen:

cat << EOF
set superusers="foobar"
password foobar baz
EOF

zum anderen noch die Zeile:

menuentry "GRML 2010.12 64bit ISO" {

abaendern in

menuentry --users foobar "GRML 2010.12 64bit ISO" {

und das update-grub2 nicht vergessen. Der User foobar ist dann superuser, was bedeutet, dass er auch fuer das editieren innerhalb der Grub2-Shell aktiv ist.