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

Eigene Debian Pakete erstellen – preinst und postinst

Vor kurzem habe ich darueber geschrieben wie man eigene Debian-Pakete und ein eigenes Repository dafuer erstellt. Ich moechte nun hinzufuegen, wie man Skripte vor- und nach der Installation ausfuehrt. Basis ist hier das Debian-Paket fuer das pregoBackup.sh Skript was in dem verlinkten Post steht.

Um Skripte vor und nach der Installation auszufuehren werden die beiden Dateien

./DEBIAN/preinst
./DEBIAN/postinst

benoetigt. Dieses koennen einfach Bash-Skripte sein, die dann bei der Installation aufgerufen werden. Nehmen wir an, ich moechte vor der Installation eine 100MB grosse Datei erstellen, und nach der erfolgreichen Installation des Paketes diese Datei wieder loeschen, koennten die beiden Skripte z.B. wie folgt aussehen:

preinst:

    #!/bin/bash
    echo "creating 100mb file..."
    dd if=/dev/zero of=/tmp/100megsofzero bs=1024 count=100000

    postinst:

      #!/bin/bash
      echo "deleting 100mb file..."
      rm -f /tmp/100megsofzero

      Paket erzeugen und ausprobieren…

      ASCII art

       sudo aptitude install figlet toilet cowsay
      jan@desktop:~$ figlet prego
       
       _ __  _ __ ___  __ _  ___  
      | '_ \| '__/ _ \/ _` |/ _ \ 
      | |_) | | |  __/ (_| | (_) |
      | .__/|_|  \___|\__, |\___/ 
      |_|             |___/       
      jan@desktop:~$ toilet prego
       
       
       mmmm    m mm   mmm    mmmm   mmm  
       #" "#   #"  " #"  #  #" "#  #" "# 
       #   #   #     #""""  #   #  #   # 
       ##m#"   #     "#mm"  "#m"#  "#m#" 
       #                     m  #        
       "                      ""         
      jan@desktop:~$ cowsay prego
       _______
      < prego >
       -------
              \   ^__^
               \  (oo)\_______
                  (__)\       )\/\
                      ||----w |
                      ||     ||

      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:~$