SSH ProxyCommand

Mal wieder SSH … Wie nervig ist es immer wegen Firewalls und Serverhopping erst auf den einen Server gehen zu muessen, bevor man sich auf dem gewuenschten einloggen kann. Die Loesung lautet ProxyCommand. Ein Beispiel fuer eine .ssh/config:

Host *
Compression		yes
CompressionLevel	9
 
Host			bar
User			username
Port			22
ProxyCommand 		ssh foo nc %h %p
Ciphers 		arcfour
ClearAllForwardings	yes
 
Host			foo
HostName		192.168.1.1
User			username
Port			22

Wenn man nun noch eine Key-Authentifizierung hat, (und auf foo in der .ssh/config auch bar definiert ist) kann man sich Schwupps mit

ssh bar

auf dem gewuenschten Rechner einloggen ohne laestiges zwischendrin :-) Ciphers und ClearAllForwardings sind Performancesachen, denn die eine Verbindung muss nicht soo stark verschluesselt sein, wenn es der Tunnel bereits ist.

 

Wie finde ich raus ob ich einen 32bit oder 64bit Prozessor habe?

  1. uname -a <- Nein, denn: generelle Systeminformationen u.a. Maschinentyp, z.B. i686; bezieht sich auf das installierte System!
  2. getconf LONG_BIT <- Nein, denn: gibt informationen ueber den Kernel, „32“ fuer 32bit Kernel und „64“ fuer 64bit Kernel
  3. grep lm /proc/cpuinfo <- Ja! LM-Flag vom Prozessor:
/usr/include/asm/cpufeature.h: #define X86_FEATURE_LM (1*32+29) /* Long Mode (x86-64) */

der LM-Flag vom Prozessor ist die einzig sichere Option um herauszufinden, ob der Prozessor 64bit kann oder nicht.

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…