<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Simlau.net Blog &#187; Debian</title>
	<atom:link href="http://blog.simlau.net/tag/debian/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.simlau.net</link>
	<description>Gedanken, Impressionen und Technikkrams</description>
	<lastBuildDate>Tue, 25 Oct 2011 18:13:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>PHP 5.3 und PHP 6.0 auf Debian Lenny 5.0</title>
		<link>http://blog.simlau.net/php-5-3-und-php-6-0-auf-debian-lenny-5-0.html</link>
		<comments>http://blog.simlau.net/php-5-3-und-php-6-0-auf-debian-lenny-5-0.html#comments</comments>
		<pubDate>Thu, 24 Sep 2009 08:00:36 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Debian]]></category>

		<guid isPermaLink="false">http://blog.simlau.net/?p=1599</guid>
		<description><![CDATA[PHP 5.3 und PHP 6.0 enthalten viele Neuerungen, die vorallem im Bereich der Objektorientierung teilweise recht praktisch sind. So wurden mit PHP 5.3 Beispielweise Namespaces und Late Static Bindings integriert. In PHP 6.0 werden überflüssige Funktionen wie register_globals, magic_quotes, register_long_arrays und der safe_mode abgeschafft, dafür gibt es einen vollständigen Unicode Support. Leider kommt man bei [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://php.net/"><img src="http://blog.simlau.net/wp-files/PHP_Logo.png" alt="PHP Logo" title="PHP Logo" width="145" height="77" class="alignright size-full wp-image-1604" style="float: right;" /></a>PHP 5.3 und PHP 6.0 enthalten viele Neuerungen, die vorallem im Bereich der Objektorientierung teilweise recht praktisch sind.</p>
<p>So wurden mit PHP 5.3 Beispielweise Namespaces und Late Static Bindings integriert. In PHP 6.0 werden überflüssige Funktionen wie register_globals, magic_quotes, register_long_arrays und der safe_mode abgeschafft, dafür gibt es einen vollständigen Unicode Support.</p>
<p>Leider kommt man bei diversen Linux Distributionen als PHP Entwickler immer nur mit recht viel Geduld zum Genuss der teilweise recht praktischen Neuerungen.<br />
Deshalb gibt es die Möglichkeit PHP manuell aus dem Quellcode heraus zu installieren, bzw. sich selbst ein kleines .deb-Paket zu basteln.</p>
<p>Das ganze wurde auf einem Debian Lenny getestet, sollte sich aber mit kleineren Änderungen (ggf. andere Paketnamen bei den Abhängigkeiten) auch auf ähnliche Systeme wie Ubuntu übertragen lassen.</p>
<p><span id="more-1599"></span></p>
<p><strong>Vorarbeiten</strong><br />
Vor einer manuellen Installation sollten alle Pakete von PHP komplett entfernt werden.</p>
<blockquote><p><code>apt-get --purge remove php5 php5-* libapache2-mod-php5</code></p></blockquote>
<p>Der folgende Prozess erstellt ein &#8220;All-in-One&#8221; Paket, welches bereits alle zusätzlichen Erweiterungen (wie php5-curl, php5-mysql usw.) enthält.</p>
<p>Aufgrund dessen kann es eventuell zu mehren Abhänigkeitsproblemen bei Applikationen wie phpMyAdmin und anderen aus den Repositorys installieren Paketen kommen. Als Workaround kann man diese Pakete mit mittels &#8211;force Parameter installieren, oder aber sie einfach nur mehr komplett per Hand pflegen.</p>
<p><strong>Bau des Paketes</strong><br />
Um PHP kompilieren zu können, werden für die Abhängigkeiten zunächst einige Pakete benötigt. </p>
<blockquote><p><code>apt-get install gcc automake make checkinstall libjpeg62-dev libpng12-dev apache2-prefork-dev libbz2-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libxpm-dev libxft-dev libt1-dev libgd2-xpm-dev libgmp3-dev libsasl2-dev freetds-dev libmysqlclient15-dev unixodbc-dev libpspell-dev librecode-dev libsnmp-dev libsqlite0-dev libtidy-dev libxslt1-dev x11proto-core-dev libxau-dev libpthread-stubs0 libpthread-stubs0-dev libxdmcp-dev libxcb1-dev libxcb-xlib0-dev x11proto-input-dev x11proto-kb-dev xtrans-dev libx11-dev libxpm-dev libexpat1-dev libfreetype6-dev pkg-config libfontconfig1-dev apache2-mpm-prefork apache2-utils apache2.2-common comerr-dev libapr1 libapr1-dev libaprutil1 libaprutil1-dev libaspell-dev freetds-common libdb4.6-dev libgmpxx4ldbl libice-dev libidn11-dev libkadm55 libkrb5-dev libldap2-dev libodbcinstq1c2 libpcre3-dev libpq-dev libsensors-dev libsm-dev libsnmp-perl libsqlite3-dev libssl-dev libsybdb5 libt1-5 libtidy-0.99-0 libwrap0-dev libxaw7-dev libxaw7-dev libxext-dev libxmu-dev libxmu-headers libxrender-dev libxt-dev uuid-dev x11proto-render-dev x11proto-xext-dev libmcrypt4 libmcrypt-dev libmhash-dev</code></p></blockquote>
<p>Zusätzlich, wenn PHP6 installiert wird ist noch das folgende Paket von nöten:</p>
<blockquote><p><code>apt-get install libicu-dev</code></p></blockquote>
<p>Nun kann man den Sourcecode von PHP 5.3 herunterladen und entpacken.</p>
<blockquote><p><code>cd /usr/src &#038;&#038; wget http://de3.php.net/get/php-5.3.0.tar.gz/from/de.php.net/mirror<br />
tar xf php-5.3.0.tar.gz &#038;&#038; cd php-5.3.0</code></p></blockquote>
<p>Bzw. wenn man PHP 6.0 aus den täglichen Snapshots installieren möchte:</p>
<blockquote><p><code>cd /usr/src &#038;&#038; wget http://snaps.php.net/php6.0-latest.tar.gz<br />
tar xf php6.0-latest.tar.gz &#038;&#038; cd php6.0-*/</code></p></blockquote>
<p>Nun ist es Zeit für das configure Script. Für PHP 5.3 führt man hier folgendes aus:</p>
<blockquote><p><code>./configure --prefix=/usr --with-apxs2=/usr/bin/apxs2 --with-config-file-path=/etc/php5/apache2 --with-config-file-scan-dir=/etc/php5/apache2/conf.d --mandir=/usr/share/man --disable-debug --with-regex=php --disable-rpath --disable-static --with-pic --with-layout=GNU --with-pear=/usr/share/php --enable-calendar --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-bcmath --with-bz2 --enable-ctype --with-db4 --without-gdbm --with-iconv --enable-exif --enable-ftp --with-gettext --enable-mbstring --with-pcre-regex=/usr --enable-shmop --enable-sockets --enable-wddx --with-libxml-dir=/usr --with-zlib --with-kerberos=/usr --with-openssl=/usr --enable-soap --enable-zip --with-exec-dir=/usr/lib/php5/libexec --without-mm --with-curl=shared,/usr --with-zlib-dir=/usr --with-gd=shared,/usr --enable-gd-native-ttf --with-gmp=shared,/usr --with-jpeg-dir=shared,/usr --with-xpm-dir=shared,/usr/X11R6 --with-png-dir=shared,/usr --with-freetype-dir=shared,/usr --with-t1lib=shared,/usr --with-ldap=shared,/usr --with-ldap-sasl=/usr --with-mhash=shared,/usr --with-mysql=shared,/usr --with-mysqli=shared,/usr/bin/mysql_config --with-pspell=shared,/usr --with-unixODBC=shared,/usr --with-xsl=shared,/usr --with-snmp=shared,/usr --with-sqlite=shared,/usr --with-mssql=shared,/usr --with-tidy=shared,/usr --with-xmlrpc=shared --with-pgsql=shared,/usr --enable-gd-native-ttf --enable-dba=shared --with-openssl-dir=shared,/usr --enable-gd-jis-conv --enable-json --with-mcrypt=shared,/usr --enable-pcntl --with-pdo-mysql --with-pdo-odbc=unixODBC,/usr --with-pdo-pgsql=shared,/usr --with-pdo-sqlite --enable-xmlreader --with-tsrm-pthreads</code></p></blockquote>
<p>Für PHP 6.0, mit minimalen Änderungen:</p>
<blockquote><p><code>./configure --prefix=/usr --with-apxs2=/usr/bin/apxs2 --with-config-file-path=/etc/php6/apache2 --with-config-file-scan-dir=/etc/php6/apache2/conf.d --mandir=/usr/share/man --disable-debug --with-regex=php --disable-rpath --disable-static --with-pic --with-layout=GNU --enable-calendar --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-bcmath --with-bz2 --enable-ctype --with-db4 --without-gdbm --with-iconv --enable-exif --enable-ftp --with-gettext --enable-mbstring --with-pcre-regex=/usr --enable-shmop --enable-sockets --enable-wddx --with-libxml-dir=/usr --with-zlib --with-kerberos=/usr --with-openssl=/usr --enable-soap --enable-zip --libexecdir=/usr/lib/php6/libexec --without-mm --with-curl=shared,/usr --with-zlib-dir=/usr --with-gd --enable-gd-native-ttf --with-gmp=shared,/usr --with-jpeg-dir=shared,/usr --with-xpm-dir=shared,/usr/X11R6 --with-png-dir=shared,/usr --with-freetype-dir=shared,/usr --with-t1lib=shared,/usr --with-ldap=shared,/usr --with-ldap-sasl=/usr --with-mhash=shared,/usr --with-mysql=shared,/usr --with-mysqli=shared,/usr/bin/mysql_config --with-pspell=shared,/usr --with-unixODBC=shared,/usr --with-xsl=shared,/usr --with-snmp=shared,/usr --with-sqlite=shared,/usr --enable-sqlite-utf8 --with-mssql=shared,/usr --with-tidy=shared,/usr --with-xmlrpc=shared --with-pgsql=shared,/usr --enable-gd-native-ttf --with-icu-dir=/usr --enable-dba=shared --with-openssl-dir=shared,/usr --enable-gd-jis-conv --enable-json --with-mcrypt=shared,/usr --enable-pcntl --with-pdo-mysql --with-pdo-odbc=unixODBC,/usr --with-pdo-pgsql=shared,/usr --with-pdo-sqlite --enable-xmlreader --with-tsrm-pthreads</code></p></blockquote>
<p>Jetzt kann man den make Befehl ausführen. Hat man einen Dualcore/Quadcore Prozessor, kann man den Prozess mittels dem Parameter -jX (X für die Anzahl an Kernen) beschleunigen.</p>
<blockquote><p><code>make -j2</code></p></blockquote>
<p>Um im letzten Schritt das Debian Paket zu erstellen, gibt man für PHP 5.3 den folgenden Befehl ein:</p>
<blockquote><p><code>checkinstall -D --install=no --fstrans=no --maintainer=root@example.org --reset-uids=yes --nodoc --pkgname=php5 --pkgversion=5.3.0 --pkgrelease=`date +%Y%m%d%H%M` --arch=amd64</code></p></blockquote>
<p>Oder für Version 6.0:</p>
<blockquote><p><code>sudo checkinstall -D --install=no --fstrans=no --maintainer=root@example.org --reset-uids=yes --nodoc --pkgname=php6 --pkgversion=6.0.0-dev --pkgrelease=`date +%Y%m%d%H%M` --arch=amd64</code></p></blockquote>
<p>Sollte man kein 64 Bit Debian/Ubuntu betreiben, so muss man &#8211;arch=amd64 entsprechend anpassen (auf i386, i486 oder i586 usw.). Der Switch &#8211;maintainer sollte auch noch an die eigene E-Mail Adresse angepasst werden.</p>
<p>checkinstall frägt auch noch nach einer Beschreibung des Paketes und zusätzlichen Infos. Dies kann man aber alles getrost ignorieren und mit Enter bestätigen. </p>
<p><strong>Fehler bei checkinstall</strong><br />
Bricht checkinstall mit einem Fehler ala &#8220;Error: At least one `LoadModule&#8217; directive already has to exist&#8230;&#8221;, liegt das daran, dass die httpd.conf des Apache2 Webservers leer ist. Hier gibt es einen kleinen Workaround:</p>
<blockquote><p><code>echo "#LoadModule directive to aid module installations" >> /etc/apache2/httpd.conf<br />
echo "#LoadModule dummy_module /usr/lib/apache2/modules/mod_dummy.so" >> /etc/apache2/httpd.conf</code></p></blockquote>
<p>Anschließend checkinstall erneut ausführen.</p>
<p><strong>Installation und Test</strong><br />
Ist der Prozess abgeschlossen befindet sich im aktuellen Verzeichnis ein Paket, welches man wie folgt installieren kann:</p>
<blockquote><p><code>dpkg -i *.deb</code></p></blockquote>
<p>Um zu testen ob PHP korrekt installiert wurde kann man in der Shell den Befehl &#8220;php -v&#8221; ausführen. Angezeigt werden sollte die entsprechende Version und das Build Datum, z. B. &#8220;PHP 5.3.0 (cli) (built: Sep 23 2009 00:00:00)&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.simlau.net/php-5-3-und-php-6-0-auf-debian-lenny-5-0.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Virtualisierung mit kvm</title>
		<link>http://blog.simlau.net/virtualisierung-mit-kvm.html</link>
		<comments>http://blog.simlau.net/virtualisierung-mit-kvm.html#comments</comments>
		<pubDate>Wed, 08 Apr 2009 08:00:59 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[virtualisierung]]></category>

		<guid isPermaLink="false">http://blog.simlau.net/?p=616</guid>
		<description><![CDATA[Die Kernel-based Virtual Machine (oder kurz KVM) ist eine Softwaremäßige Hardware-Virtualisierungstechnik und wurde im Oktober 2006 veröffentlicht. Als Gastsysteme unterstützt KVM Linux (32 und 64 Bit), Windows (32 Bit), ReactOS, FreeDOS, Solaris und diverse BSD-Derivate sowie einige weitere. Ab dem Kernel 2.6.20 ist KVM Standardmäßig im Linux-Kernel enthalten. Für mich hat kvm gegenüber seinen Konkurrenten [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://uploads.simlau.net/files/simon/openlogo-100.png" alt="Debian Logo" style="float: right;" />Die Kernel-based Virtual Machine (oder kurz <strong>KVM</strong>) ist eine Softwaremäßige Hardware-Virtualisierungstechnik und wurde im Oktober 2006 veröffentlicht. Als Gastsysteme unterstützt KVM Linux (32 und 64 Bit), Windows (32 Bit), ReactOS, FreeDOS, Solaris und diverse BSD-Derivate sowie einige weitere. Ab dem Kernel 2.6.20 ist KVM Standardmäßig im Linux-Kernel enthalten. </p>
<p>Für mich hat kvm gegenüber seinen Konkurrenten wie XEN folgende Vorteile:</p>
<ul>
<li>Kein spezieller Kernel des Hostsystems wie bei XEN benötigt</li>
<li>Alle Gastsysteme haben so ihre &#8220;eigenen Kernel&#8221;</li>
<li>KVM ist im Standard Kernel von Debian enthalten</li>
<li>Extrem einfache Administration</li>
<li>Es werden sehr viele unterschiedliche Gastsysteme unterstützt</li>
</ul>
<p><strong>Installation</strong><br />
Zu allererst muss für KVM wie für XEN auch die BIOS Einstellung <strong>Virtualization Technology</strong> aktiviert sein. Sollte ja eigentlich logisch sein. <img src='http://blog.simlau.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> <span id="more-616"></span></p>
<p>Unter Debian und/oder Ubuntu muss nun das Paket <strong>kvm</strong> installiert werden. Zusätzlich benötigten wir noch das Paket <strong>bridge-utils</strong>. Das ist nötig um das Network Interface eth0 zu &#8220;bridgen&#8221;, sprich um eine &#8220;Netzwerk-Brücke&#8221; zu den Gastsystemen zu bauen und ihnen so Zugang zum Netz (falls gewünscht) zu ermöglichen. Wer lediglich ein einfaches System ohne Netzwerkanbindung benötigt, kann das Paket einfach weg lassen.</p>
<blockquote><p><code>root@server01 ~ $ apt-get install kvm bridge-utils</code></p></blockquote>
<p>Alle Abhängigkeiten werden dabei wie immer automatisch mitinstalliert.</p>
<p>Nun ist eine kleine Änderung an der Datei <strong>/etc/network/interfaces</strong> nötig, um die Bridge zu aktivieren. Aus dem Standard Interface eth0&#8230;</p>
<blockquote><p><code># The primary network interface<br />
auto eth0<br />
iface eth0 inet static<br />
&nbsp;&nbsp;address 192.168.168.100<br />
&nbsp;&nbsp;netmask 255.255.255.0<br />
&nbsp;&nbsp;gateway 192.168.168.1<br />
&nbsp;&nbsp;network 192.168.168.0<br />
&nbsp;&nbsp;broadcast 192.168.168.255</code></p></blockquote>
<p>wird ein bridged Interface br0&#8230;</p>
<blockquote><p><code># The primary network interface<br />
auto br0<br />
iface br0 inet static<br />
&nbsp;&nbsp;bridge_ports eth0<br />
&nbsp;&nbsp;address 192.168.168.100<br />
&nbsp;&nbsp;netmask 255.255.255.0<br />
&nbsp;&nbsp;gateway 192.168.168.1<br />
&nbsp;&nbsp;network 192.168.168.0<br />
&nbsp;&nbsp;broadcast 192.168.168.255</code></p></blockquote>
<p>Wie man sieht wird hier einfach nur jeweils eth0 durch br0 getauscht und die Zeile &#8220;bridge_ports eth0&#8243; hinzugefügt.</p>
<p>Als Gastsystem werde ich hier als Beispiel mal ein Debian Lenny 5.0 installieren. Eine Installation von einem Windows, ReactOS oder sonstigen unterscheidet sich aber nur sehr geringfügig. Dazu brauchen wir zunächst einmal das entsprechende Installationsmedium als ISO: </p>
<blockquote><p><code>root@server01 ~ $ wget -O debian.iso http://cdimage.debian.org/debian-cd/5.0.0/i386/iso-cd/debian-500-i386-businesscard.iso</code></p></blockquote>
<p>Nun generieren wir uns eine virtuelle Festplatte, hier mit 10 Gigabyte Speicher:</p>
<blockquote><p><code>root@server01 ~ $ kvm-img create size 10G vserver.img</code></p></blockquote>
<p>Nun kommen wir zum eigentlich starten des virtuellen Systems. Dazu benötigten wir noch einige Informationen:</p>
<ul>
<li>Wie viele virtuelle CPUs soll der Gast bekommen?</li>
<li>Wie viel virtuellen RAM bekommt der Gast?</li>
<li>Zusätzlich eine eindeutige MAC-Adresse (am besten erdacht)</li>
</ul>
<p>Soweit so gut, hat man das kann man die Maschine auch schon starten. Ich habe hier mal nur die wichtigsten Parameter angegeben. kvm unterstützt noch einige mehr. Diese schlägt man am besten ebenfalls einmal in den man Pages nach.</p>
<blockquote><p><code>kvm \<br />
&nbsp;&nbsp;&nbsp;&nbsp;-name vserver \ # Der "Name" des Systems (optional)<br />
&nbsp;&nbsp;&nbsp;&nbsp;-smp 2 \ # Die Anzahl der virtuellen CPUs<br />
&nbsp;&nbsp;&nbsp;&nbsp;-m 512 \ # Wie viel Speicher bekommt das System (hier 512 MB)<br />
&nbsp;&nbsp;&nbsp;&nbsp;-hda vserver.img \ # Die Festplatte (hda) des Systems<br />
&nbsp;&nbsp;&nbsp;&nbsp;-cdrom debian.iso \ # eine CD im virtuellen Laufwerk (optional)<br />
&nbsp;&nbsp;&nbsp;&nbsp;-boot c \ # Bootsequenz: C steht für die Festplatte, D für die CD<br />
&nbsp;&nbsp;&nbsp;&nbsp;-net nic,macaddr=00:16:3B:00:00:03 \ # Die MAC-Adresse des vServers<br />
&nbsp;&nbsp;&nbsp;&nbsp;-net tap \ # Für das bridged Network Interface<br />
&nbsp;&nbsp;&nbsp;&nbsp;-vnc :0 \ # Der VNC-Server mitstarten (:0 entspricht dem Port 5900)<br />
&nbsp;&nbsp;&nbsp;&nbsp;-pidfile /var/run/vserver.pid \ # Ein Pidfile in dem die Prozess-ID geschrieben wird<br />
&nbsp;&nbsp;&nbsp;&nbsp;-daemonize # Parameter für das starten als des Servers als Deamon</code></p></blockquote>
<p>Nun ist der Server gestartet und man kann sich per VNC über die IP des Hostsystems (hier 192.168.168.100) und des entsprechenden VNC-Ports (hier 5900) anmelden. Per VNC installiert man die Maschine nun einmalig, klatscht noch direkt einen SSH-Server nach und voila, fertig! <img src='http://blog.simlau.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><img src="http://uploads.simlau.net/files/simon/kvm-pre.png" alt="KVM over VNC" style="display: block; position: relative;;" /></p>
<p><strong>Zusammenfassend</strong><br />
kvm wirkt recht stabil und läuft flüssig. Allerdings setze ich es noch nicht weiter in produktiven Projekten ein. Momentan setze ich es dazu ein, binnen von Minuten ein &#8220;sauberes&#8221; Testsystem bereit zu stellen. Dafür eignet sich kvm wohl besser als Beispielsweiße XEN.</p>
<p>Ein Problem ist mir bei meinen Tests leider aufgefallen: ich konnte mich, sobald ich kvm zusätzlich ein Passwort für den VNC-Server übergeben habe, nicht mehr per VNC auf dem Server einloggen. Möglicherweiße lag das aber an meinem Client (vncviewer). Also habe ich den VNC-Server per iptables nur für meine IP-Adresse/mein Netz freigegeben. Über Feedback zum Thema Passwort Authentifikation bei VNC/KVM wäre ich daher sehr erfreut.</p>
<p>Ein lästiges Problem bleibt allerdings trotzdem noch: die langen Startparameter. Man kann sich zwar hierfür jeweils Start- und Stopscripte basteln, allerdings gibt es auch eine schönere Lösung. Diese heißt <strong><a href="http://libvirt.org/">libvirt</a></strong>. Darüber werde ich allerdings mehr in einem weiteren Post und in naher Zukunft schreiben. <img src='http://blog.simlau.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Für alle die noch mehr über kvm erfahren wollen kann ich die Projekt eigene <a href="http://www.linux-kvm.org/page/Main_Page">Linux KVM-Wiki</a> empfehlen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.simlau.net/virtualisierung-mit-kvm.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>SSH-Agent: keychain</title>
		<link>http://blog.simlau.net/ssh-agent-keychain.html</link>
		<comments>http://blog.simlau.net/ssh-agent-keychain.html#comments</comments>
		<pubDate>Tue, 07 Apr 2009 17:28:39 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[keychain]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://blog.simlau.net/?p=603</guid>
		<description><![CDATA[Um einen SSH-Login ohne Passwort zu ermöglichen kann man ohne weiteres SSH-Keys ohne Passphrase verwenden. Dies hat allerdings einen großen Nachteil: wird der Key &#8220;gestohlen&#8221; bzw. gerät er in die falschen Hände, kann ein Angreifer sich ohne weiteres auf den betroffenen Systemen einloggen. Trotzdem braucht man passwortlose Logins des öfteren. Ein gutes Beispiel hierfür sind [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://uploads.simlau.net/files/simon/utilities-terminal.png" alt="Terminal" style="float: right;" />Um einen SSH-Login ohne Passwort zu ermöglichen kann man ohne weiteres SSH-Keys ohne Passphrase verwenden. Dies hat allerdings einen großen Nachteil: wird der Key &#8220;gestohlen&#8221; bzw. gerät er in die falschen Hände, kann ein Angreifer sich ohne weiteres auf den betroffenen Systemen einloggen.</p>
<p>Trotzdem braucht man passwortlose Logins des öfteren. Ein gutes Beispiel hierfür sind automatisierte Backups per Cronjob. An dieser Stelle kommt keychain ins Spiel. Hier handelt es sich um ein Programm, welches die Umgebungsvariablen des SSH-Agents speichert und so auch anderen Login-Shells zur Verfügung stellt.</p>
<p>Das Passwort muss also nur ein ein einziges mal eingegeben werden und steht dann solange zur Verfügung bis der keychain Deamon beendet wird.<span id="more-603"></span></p>
<p><strong>Installation</strong><br />
Unter Debian und Ubuntu-Systemen muss hierzu das Paket keychain installiert werden. </p>
<blockquote><p><code>root@server01 ~ $ apt-get install keychain</code></p></blockquote>
<p>Anschließend muss (wenn nicht schon geschehen) ein SSH-Key generiert werden, natürlich mit einer entsprechenden Passphrase. Dazu kann wie gewohnt das Kommando <strong>ssh-keygen</strong> verwandt werden. Informationen dazu findet man auf der entsprechenden Man-Page. Ich möchte hier gar nicht weiter darauf eingehen, weil ich mal davon ausgehe, dass Menschen, die sich so etwas einrichten, wissen was sie tun.</p>
<p>Anschließend muss der Key in keychain importiert werden. Dies geschiet folgendermaßen:</p>
<blockquote><p><code>root@server01 ~ $ keychain --quiet ~/.ssh/id_rsa</code></p></blockquote>
<p>Hier wird einmalig nach der Passphrase des SSH-Keys gefragt. Anschließend kann man sich ohne weiteres auf allen Servern Passwortlos einloggen. Wird die Sitzung beendet müssen die Umgebungsvariablen per</p>
<blockquote><p><code>source ~/.keychain/$HOSTNAME-sh</code></p></blockquote>
<p>neu geladen werden.</p>
<p><strong>Automatisches Freischalten des Keys</strong><br />
Um die gespeicherten Umgebungsvariablen beim Einloggen eines Users automatisch zu laden, kann man sich das folgende Snippet in die Servereigene ~/.bash_profile kopieren. Sofern der SSH-Key (in diesem Fall ein RSA2 Key) noch nicht geladen wurde, wird er hier zusätzlich noch automatisch importiert und nach dem Passwort gefragt. Der Parameter $HOSTNAME sollte entsprechend angepasst werden.</p>
<blockquote><p><code>if [[ -f ~/.ssh/id_rsa ]]; then<br />
&nbsp;&nbsp;keychain --quiet ~/.ssh/id_rsa<br />
&nbsp;&nbsp;source ~/.keychain/$HOSTNAME-sh<br />
fi</code></p></blockquote>
<p>Der Parameter &#8211;quiet unterdrückt hier die &#8220;größere&#8221; Ausgabe, um nicht weiter zu stören. Das Kommando source importiert die Umgebungsvariablen.</p>
<p>Bei einem Script, welches z. B. per Cronjob gestartet wird, kann die Einbindung von Keychain folgendermaßen aussehen:</p>
<blockquote><p><code>#!/bin/bash<br />
# MeinScript.sh</p>
<p># Umgebungsvariablen laden<br />
source /root/.keychain/$HOSTNAME-sh</p>
<p># Per SCP eine Datei hohlen<br />
scp root@192.168.168.26:/root/foo /root/bar</code></p></blockquote>
<p>Sobald der Deamon keychain beendet wird (z. B. in dem der Server stromlos gemacht oder rebootet wird), hat ein Angreifer keine Chance mehr. <img src='http://blog.simlau.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.simlau.net/ssh-agent-keychain.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Dateien Rekursiv löschen</title>
		<link>http://blog.simlau.net/dateien-rekursiv-loschen.html</link>
		<comments>http://blog.simlau.net/dateien-rekursiv-loschen.html#comments</comments>
		<pubDate>Wed, 10 Dec 2008 17:47:40 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Debian]]></category>

		<guid isPermaLink="false">http://blog.simlau.net/?p=195</guid>
		<description><![CDATA[Da ich heute gefragt wurde, ob es mit der Bash möglich ist, Dateien (ggf. auch nach einem Muster) rekursiv zu entfernen, habe ich mich entschlossen mal eben einen Eintrag darüber zu bloggen: Ja, es ist möglich und ist dank find sogar äußerst simpel. Nachfolgend zwei Beispiele. Dieser Befehl entfernt alle nervigen Thumbs.db Dateien aus dem [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.simlau.net/wp-files/terminal.png" alt="Terminal" style="float: right;" />Da ich heute gefragt wurde, ob es mit der Bash möglich ist, Dateien (ggf. auch nach einem Muster) rekursiv zu entfernen, habe ich mich entschlossen mal eben einen Eintrag darüber zu bloggen: Ja, es ist möglich und ist dank <strong>find</strong> sogar äußerst simpel. Nachfolgend zwei Beispiele. <img src='http://blog.simlau.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Dieser Befehl entfernt alle nervigen Thumbs.db Dateien aus dem Verzeichniss ~/Bilder</p>
<blockquote><p><code>find ~/Bilder -name 'Thumbs.db' -exec rm -v {} \;</code></p></blockquote>
<p>Hier noch ein Befehl, mit dem man als Backupdateien (mit ~ endend) löschen kann:</p>
<blockquote><p><code>find ~/Dokumente -name '*~' -exec rm -v {} \;</code></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.simlau.net/dateien-rekursiv-loschen.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

