2 entries in /misc:

vlock und sysrq

Um meinen Laptop zu sperren, benutze ich am liebsten vlock. Ich habe mir ein kleines Skript geschrieben, das, wenn ich lockscreen in einem Terminal eingebe oder Fn+F2 drücke, auf eine leere Konsole umschaltet und dann dort vlock -a startet. Das sorgt dafür, dass der Rechner damit vollkommen unbenutzbar wird, bis man entweder mein Passwort oder das von root (das es nicht gibt) eingibt. X-Locker mag ich nicht, da man bei denen oft mittels Strg+Alt+Backspace das ganze X beenden kann oder einfach auf eine andere Konsole wechseln und dort entweder eine vergessene Login-Session finden oder anderen Unsinn anstellen.

Das einzige, was mich in an vlock immer gestört hat, war, dass man es ganz einfach austricksen konnte, wenn im Kernel sysrq aktiviert ist. Dann kann man mit AltGr+SysRQ+K (oder anderen Kombinationen, die weniger nett sind), das Programm einfach beenden. Eine Abhilfe ist, sysrq einfach zu deaktivieren. Das sperrt mich aber auch aus dem Rechner aus, wenn X sich durch doofe ATI-Treiber und/oder das Verwenden eines zu neuen Entwickler-Kernels sich mal wieder aufgehängt hat.

Wie gesagt, ein Problem, was mich schon länger gestört hat. Deshalb habe ich es jetzt behoben, Quellen gibt es hier:

http://cthulhu.c3d2.de/~toidinamai/git/vlock.git


ssh_config

ssh(1) verarbeitet /etc/ssh/ssh_config und ~/.ssh/config in einer Art und Weise, dass einmal gemachte Änderungen an der Standardeinstellung nicht ein zweites Mal überschrieben werden können. Das bedeutet, dass die allgemeinsten Einträge unten stehen müssen. Dieses kontraintuitive Verhalten hat mir schon mehrfach Verwirrung bereitet.

Ganz unten in meiner ~/.ssh/config steht nun:

Host *
  ControlPath ~/.ssh/sockets/%r@%h:%p
  ControlMaster auto
  ServerAliveInterval 15
  ServerAliveCountMax 4
  TCPKeepAlive no
  IdentitiesOnly yes
  HashKnownHosts no

ControlPath ~/.ssh/sockets/%r@%h:%p, ControlMaster auto

Diese beiden Anweisungen sorgen dafür, dass man sich zu einem Server mit dem gleichen Account immer nur einmal verbindet. Alle weiteren Verbindungen werden über die erste geführt, über einen Unix-Domain-Socket im Verzeichnis ~/.ssh/sockets. Wenn ich mit scp(1) oder rsync(1) auf einem Server arbeite, auf dem ich mich nur mit Passwort einloggen kann, mache ich einfach in einem anderen Terminal eine Shell auf und werde dann zwischendurch nicht mit weiteren Passwortabfragen belästigt.

Einzig ärgerlich ist, dass sich ssh(1) durch tote Sockets irritieren lässt, sodass man diese per Hand löschen muss, sollte sich ein SSH-Prozess nicht sauber beendet haben.

ServerAliveInterval 15, ServerAliveCountMax 4, TCPKeepAlive no

Diese drei Anweisungen haben sich für mich als hilfreich herausgestellt, damit sich Verbindungen, die nicht mehr reagieren (z.B. durch Wiedereinwahl bei DSL) automatisch beenden. Das Warten auf den TCP-Timeout kann manchmal sehr lange dauern.

IdentitiesOnly yes

Diese Anweisung sorgt dafür, dass, wenn ich den SSH-Agent verwende, nur die Identitäten versucht werden, die ich in der ~/.ssh/config konfiguriert habe. Andernfalls probiert ssh(1) alle vorhandenen Keys durch, wobei die Server nach ungefähr den ersten drei die Verbindung trennen. Ich benutze aber für jeden Host (es sei denn auf zwei Hosts ist das gleiche Home-Verzeichnis gemountet) einen anderen PublicKey, sodass der SSH-Agent ohne diese Anweisung für mich unbenutzbar ist.

HashKnownHosts no

Diese Anweisung verhindert, dass die Hostnamen oder IP-Adressen der Rechner nur als Hash in meiner ~/.ssh/known_hosts gespeichert werden. Dieses Verhalten soll die Verbreitung von SSH-Würmern einschränken und soll IIRC irgendwann zum Standard werden. Da ich meine ~/.ssh/known_hosts aber auch oft von Hand bearbeite, verzichte ich lieber darauf.