SSH ohne Passwort

Wenn man mehrere Server hat möchte man manchmal vieleicht eine SSH Verbindung unter diesem aufbauen können, ohne das Passwort einzugeben.

-Dies hat z.B. in scripts den Vorteil, dass, auch wenn man scp oder rsync benutzt nirgendwo das Passwort hinschreiben muss.

Und so gehts:

SSH-Keys generieren:

ssh-keygen -t rsa
ssh-keygen -t dsa

Es entstehen zwei Dateien mit den Schlüsselpaaren: ~/.ssh/id_{rsa,dsa} und ~/.ssh/id_{rsa,dsa}.pub.

[stextbox id=“note“ caption=“Hinweis“]Für Protokol 2 gibt es RSA und DSA Keys, eigentlich reicht normalerweise einer von beiden.[/stextbox]

Die *.pub-Dateien können nun auf den Zielhost kopiert werden und dort an ~/.ssh/authorized_keys angehängt werden:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote-system
ssh-copy-id -i ~/.ssh/id_dsa.pub user@remote-system

user@remote-system steht dabei für den gewünschten user (z.B. root) auf dem system, auf das man zugreifen möchte.

Hat man am Anfang eine Passphrase eingegeben, wird immer nach dieser gefragt. Um dies zu verhindern, kann man dem ssh-agent sagen er soll die Passphrase immer automatisch eingeben:

test "$SSH_AUTH_SOCK" || exec ssh-agent $SHELL -c "ssh-add; exec $SHELL -login"

Eine genauere Beschreibung findet sich unter http://www.schlittermann.de/doc/ssh.html

clamav-freshclam: Problem with internal logger

Beim Einsatz von clamav, bzw dessen Update Tool erhält man oft Mails in der Form:

ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log)

Nach einem Neustart von freshclam funktioniert alles wieder eine Zeit lang, danach wiederholt sich der Fehler.

Die Lösung hierzu ist freshclam für syslog als logger zu konfigurieren, da der interne nicht ganz ausgereift zu sein scheint (und es sowieso besser ist alles über den selben logger laufen zu lassen).

So wirds umgestellt:

In der Datei /etc/clamav/freshclam.conf den Wert:

UpdateLogFile /var/log/clamav/freshclam.log

auskomentieren, dafür "LogSyslog" auf True setzen:

LogSyslog true
LogFacility LOG_LOCAL6

Das ganze sieht dann so aus:

#UpdateLogFile /var/log/clamav/freshclam.log
LogSyslog true
LogFacility LOG_LOCAL6

Nun passt man noch den syslogd an:
/etc/syslog.conf öffnen, dann unten anfügen:

# save clamav log
local6.*                        /var/log/clamav/freshclam.log

Nun noch die beiden daemons neu starten und fertig:

/etc/init.d/sysklogd restart
/etc/init.d/clamav-freshclam restart

Info-Quelle: http://sial.org/howto/clamav/freshclam/

Abgestürtze SSH Session: Wieder verbinden zu laufenden Prozessen

Manchmal passiert es: Die SSH session bricht ab, sei es aufgrund längerer Inaktivität, oder Verbindungsunterbruch. Vor allem, wenn man wichtige Kommandos eingegeben hatte, möchte man diese zwecks Rückverfolgung in der history behalten. – Dies ist bei einem Session-Unterbruch normalerweise nicht der Fall, da die bash-history immer erst beim logout geschrieben wird.

Oder man hat z.B. eine Datei mit vim geöffnet und möchte diese nach dem neu verbinden weiter bearbeiten.

Continue reading Abgestürtze SSH Session: Wieder verbinden zu laufenden Prozessen

TSM Client auf diversen Linux Distributionen einrichten

IBM liefert für ihren TSM Client RPM-Packete für Linux.
Diese lassen sich auf Red Hat Enterprise Linux (RHEL) und SUSE Linux Enterprise Server (SLES) problemlos installieren. Auf anderen Linux’en, vor allem den nicht zertifizierten gibt es hingegen kleinere Hürden, die man überwinden muss.

PREREQS

Benötigt werden immer die original RPM-Pakete von IBM: TIVsm-API.i386.rpm, TIVsm-BA.i386.rpm und TIVsm-msg.de_DE.i386.rpm (optional)

DEBIAN / UBUNTU

Hier muss man die Abhängigkeiten installieren (libstdc) und das .rpm Paket in ein .deb Paket umwandeln; dies geht ganz einfach mit dem tool: ‚alien‘:

apt-get update
apt-get install libstdc++.so.5
apt-get install alien
alien -i TIVsm-API.i386.rpm
alien -i TIVsm-BA.i386.rpm
alien -i TIVsm-msg.de_DE.i386.rpm
dpkg -i TIVsm-API.i386.deb
dpkg -i TIVsm-BA.i386.deb

Danach müssen noch einige Lib-Pfade in die Datei /etc/ld.so.conf aufgenommen werden:

echo "/opt/tivoli/tsm/client/ba/bin" >> /etc/ld.so.conf
echo "/opt/tivoli/tsm/client/api/bin" >> /etc/ld.so.conf

Mit dem Befehl ldconfig -v werden diese Pfade übernommen:

ldconfig -v

Dann müssen einige Links richtig gelegt werden, damit TSM seine Sprachdateien findet:

cd /opt/tivoli/tsm/client/ba/bin/
ln -s ../../lang/en_US en_US
cd /opt/tivoli/tsm/client/api/bin/
ln -s ../../lang/en_US en_US

FERTIG.

FEDORA CORE

Fedora arbeitet schon mit dem RPM, eine umwandlung ist also nicht nötig. Es gillt, aber vorher noch die Abhängigkeiten aufzulösen:

yum check-update
yum install compat-libstdc++*

Nun gibt es noch abhängigkeiten, die man nicht auflösen kann, aber auch nicht dringend sind. Drum installieren wir das RPM mit der "–nodeps" Option

rpm -ihv TIVsm-API.i386.rpm --nodeps
rpm -ihv TIVsm-BA.i386.rpm --nodeps

Da hier das Startscript nicht mitkopiert wird, muss noch ein universal dsmcad startscript (anhang) ins init.d verzeichnis kopiert-, und die rc.?-Links erstellt werden:

ln -s ../init.d/dsmcad /etc/rc3.d/S08dsmcad
ln -s ../init.d/dsmcad /etc/rc4.d/S08dsmcad
ln -s ../init.d/dsmcad /etc/rc5.d/S08dsmcad
ln -s ../init.d/dsmcad /etc/rc0.d/K08dsmcad
ln -s ../init.d/dsmcad /etc/rc1.d/K08dsmcad
ln -s ../init.d/dsmcad /etc/rc6.d/K08dsmcad

Rechner im Netzwerk finden

Manchmal steht man vor dem Problem, dass man nicht mehr weiss, welches Gerät welche IP hat, oder man will einfach sehen, welche Rechner im Netzwerk gerade erreichbar sind.

Diese kann man sich unter Linux mit einem broadcast-ping anzeigen lassen:

ping -b 192.168.0.0
arp -a

Der erste Befehl sendet ein ping, an alle erreichbaren Rechner, der zweite wertet die Namensauflösungen aus und zeigt so den evtl. vorhandenen Domainnamen an.

Linux: Kernel (neu) Kompilieren

Kaum hat man sein Linux frisch installiert, schon merkt man, dass man noch einige Kernel Optionen braucht, etwa zusätzliche Module.

Vielmals schreckt das neu kompilieren des kernels ab, doch es ist eigentlich ganz einfach… 😉

    1. Zuerst machen wir ein backup des alten Kernels:
cp -pv /boot/vmlinuz-x.x.x.x /root

Paranoide können auch noch die ganze boot-partition sichern:

tar -cvvz /boot/* -f /root/oldboot.tar.gz

2. Dann wechseln wir ins Linux Source verzeichniss:

cd /usr/src/linux-x.x.x.x

Hinweis: Die ‚x‘ stehen für die kernel version, die man anhand der Eingabe von: <PRE>uname -a</PRE> herausfinden kann

3. Evtl. noch erstellen des Linux-Symlinks (die kann wichtig sein, wenn im quelltext auf /usr/src/linux, anstatt auf das verzeichniss mit der vollen Version verwiesen wird) und zur Sicherheit vorher den alten löschen:

rm /usr/src/linux && ln -s /usr/src/linux-x.x.x.x /usr/src/linux

(Die x.x.x.x stehen wiederum für die Version des Kernels)

3. Erstellen der Kernel Konfiguration:
Falls man schon einen funktionierenden kernel am laufen hat, ist es am besten dessen Konfiguration erstmal zu übernehmen; dies erreichen wir mit:

make oldconfig

-Hier kann man bis zum schluss einfach immer ENTER Drücken, da wir nacher die genaue Konfiguration noch in einem übersichtlichen Menu anpassen werden.

Nun wird der Kernel individuell angepasst:

make menuconfig

Hier kannst du dann alle Kernel Optionen auswählen; weiss man nicht, was eine bestimmte Option bedeuted, kann man sich mit ‚HELP‘ die Beschfreibung dazu anzeigen lassen. -Ist man danach immer noch nicht schlauer, empfiehlt sich die vorgeschlagene default Einstellung zu lassen

[stextbox id=“note“ caption=“Hinweis“]Falls beim Befehl make menuconfig Fehler auftauchen, muss man sehr wahrscheinlich noch die ncurses-library installieren. Dies geschieht mittels:

apt-get install ncurses-dev

[/stextbox]

4. Kompilieren des Kernels und der Kernel-Module:

make && make install && make modules_install

5. Bootloader konfigurieren
Bei der Frage, ob z.B. LiLo gestarten werden soll, muss man mit Ja antworten

6. Boot Sicherheit (optional, nur LiLo)
Im schlimmsten Falle sollte man sicherstellen, dass man das System mit dem alten, funktionierendem kernel noch booten kann…

Dazu editiert man die lilo.conf datei; die Zeile "default=" (also z.B. default=kernel-2.6.17.6)
In dieser sollte jetzt noch der ALTE Kernel stehen (noch NICHT ändern)

Weiter unten sieht man die eingetragenen Kernel, hier den neuen hinzufügen:

image=/boot/vmlinuz-2.6.17.6
label=kernel-2.6.17.6
read-only

Nun Editor verlassen und lilo ausführen:

lilo

Es erscheint die Meldung, dass der neue Kernel hinzugefügt wurde:

Added kernel-2.6.17.6 *
Added kernel-2.6.19

Nun kann man "lilo -R LABEL" starten; dies sagt dem LiLo, dass er den kernel mit dem label "LABEL" genau einmal bootet, danach wieder der alte.

lilo -R kernel-2.6.19

Falls der Rechner nun mit dem neuen Kernel nicht mehr richtig bootet, reicht ein Neustart und es wird wieder der alte Kernel gebootet! 😉

[stextbox id=“warning“ caption=“Achtung“]Nach dem korrekten Neustart des neuen Kernel, muss dieser "fest" als Standardkernel eingetragen werden:
/etc/lilo.conf editieren und bei "default=" den neuen Kernel eintragen.
-Danach am besten nochmals rebooten um zu sehen, ob der neue Kernel standardmässig gestartet wird.[/stextbox]

7. Neustarten
Nun noch das System Neustarten und der neue Kernel läuft:

shutdown -r now

System remote klonen

Wieder mal ein Tipp aus der Linux-Admin Trickkiste. 😉

In diesem Fall ging es darum ein System komplett auf ein anderes zu klonen. Sind die beiden Systeme baugleich, ist das mit dd und ssh relativ einfach einfach möglich.

Dazu müssen zuerst beide Systeme mit einer Linux-BootCD (z.B. sysrescuecd) gebootet- und das Netzwerk konfiguriert werden.

Dann gibt man auf dem Quell-System einfach:

quelle~ # dd if=/dev/sda | ssh root@zielsystem "dd of=/dev/sda"

ein und wartet bis der Vorgang abgeschlossen ist. Wer sich noch einen Status des Kopiervorganges anzeigen lassen möchte:

ziel~ # kill -USR1  $(pgrep '^dd$')

-Die Ausgabe erfolgt dabei auf der Konsole vom Quellsystem.

Nach dem Kopiervorgang sollte man das System mounten und die Netzwerk-, sowie Hostname noch anpassen; sonst gibt es danach einen IP-Adresskonflikt im Netzwerk.

[stextbox id=“warning“ caption=“Achtung“]Dass das ganze klappt sollten beide Systeme (zumindest die Disks) relativ baugleich sein – Und natürlich gehen die Daten auf dem Zielsystem unwiderruflich verloren. ;-)[/stextbox]

Erweiterungen

Komprimieren: Es wäre nun noch Möglich die Daten durch gzip zu pipen um Bandbreite zu sparen.

Erweiterter Status: Mit pv kann man sich erweiterte Statusinformationen über den Kopiervorgang zusammenbasteln.

Weiterführende Quellen

http://blog.t-error.ch/article/444/festplattenimage_mit_linux_erstellen/
http://linuxcommando.blogspot.com/2008/06/show-progress-during-dd-copy.html

Konsole teilen

Mittels des programms ’screen‘ kann ein anderer Benutzer, der sich einloggt die die Konsole mit einem anderen "teilen"; d.h. beide können Kommandos eingeben und sehen auch was der andere eingibt.

Dies ist z.B. Hilfreich, wenn man einem entfernten Benutzer zeigen möchte wie etwas auf der Konsole gemacht wird.

Dazu sind nur 2 Schritte notwendig:

Benuzer1 meldet sich an und gibt

screen

ein.

Der Benutzer2 meldet sich auch an und startet mit

screen -x

die "Lernkonsole".

Dualboot mit dem Windows Bootloader

Wenn man Windows und Linux auf einer Platte installiert hat, verwendet man meistens den Bootmanager von Linux (LiLo, GRUB,…) um die beiden Systeme zu starten.

Manchmal möchte man aber lieber den Windows-Bootloader verwenden, denn auch das geht:

Um den Windows bootmanager dazu bringen, Linux zu starten, muss man den Linux Bootsektor in eine Datei schreiben, diese auf die Windows Partition
kopieren und dann diese in der boot.ini eintragen.
Und so gehts:

# Linux starten und als root anmelden.
# Diskette in das Laufwerk einlegen und wie folgt mounten:

mount /dev/fd0 /mnt/floppy

# Folgendes in der Konsole eingeben (statt "/dev/hda3",die gewünschte Linux Partition angeben):

dd if=/dev/hda3 bs=512 count=1 of=/mnt/floppy/linux.sec

# Das floppy wieder unmounten duch die Eingabe von

umount /mnt/floppy

wieder und starten weider Windows

Nun die Datei "linux.sec" von der Diskette auf C: kopieren, danach die Datei ‚C:boot.ini‘ öffnen.
Hier unter der letzten Zeile Eintragen:
C:linux.sec="Linux" ein. Die boot.ini sollte nun etwa so aussehen:

-----BOOT.INI-------
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)WINNT="Windows 2000 Professional"
D:="Windows ME"
C:linux.sec="Linux"
-----BOOT.INI-------

Nun die Datei speichern, schliessen und Windows neu starten.
Es sollte jetzt zusätzlich der Menüpunkt "Linux" beim starten erscheinen.