<?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>Jediblog &#187; RSA</title>
	<atom:link href="http://www.jediblog.de/tag/rsa/feed" rel="self" type="application/rss+xml" />
	<link>http://www.jediblog.de</link>
	<description>Die Welt aus der Sicht eines Nerds</description>
	<lastBuildDate>Wed, 25 Jan 2012 18:05:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>ssh ohne Passwort</title>
		<link>http://www.jediblog.de/ssh-ohne-passwort</link>
		<comments>http://www.jediblog.de/ssh-ohne-passwort#comments</comments>
		<pubDate>Wed, 17 Mar 2010 00:00:37 +0000</pubDate>
		<dc:creator>jedi</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PuTTY]]></category>
		<category><![CDATA[RSA]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://jediblog.de/?p=12</guid>
		<description><![CDATA[Wer einen Server hat, zu dem er sich oft verbindet, kennt das Problem vielleicht: Man öffnet eine ssh-Verbindung, gibt seinen Benutzernamen ein, dann das Passwort und ist schließlich angemeldet. Aus Sicherheitsgründen hat das Passwort 18 Stellen oder mehr, oft genug kommt es vor, dass man sich vertippt, im schlimmsten Fall so oft hintereinander, dass die [...]]]></description>
			<content:encoded><![CDATA[<p>Wer einen Server hat, zu dem er sich oft verbindet, kennt das Problem vielleicht:</p>
<p>Man öffnet eine ssh-Verbindung, gibt seinen Benutzernamen ein, dann das Passwort und ist schließlich angemeldet. Aus Sicherheitsgründen hat das Passwort 18 Stellen oder mehr, oft genug kommt es vor, dass man sich vertippt, im schlimmsten Fall so oft hintereinander, dass die eigene IP-Adresse vom Server gesperrt wird. Zugegeben, das ist ein übertriebenes Horror-Szenario, aber ausschließen, dass es schon passiert ist, möchte ich nicht.</p>
<p>Warum also nicht ganz ohne Passwort anmelden?</p>
<p><span id="more-12"></span>Die Möglichkeit besteht durchaus, ist noch dazu sicherer als die Anmeldung per Passwort und natürlich gemütlicher. Die Rede ist von der Authentifizierung mit einem Schlüsselpaar (z.B. RSA). Dieses Schlüsselpaar muss für jeden Client einmal generiert werden. Der öffentliche Schlüssel wird dann auf dem Server abgelegt, damit er weiß, dass der Client sich anmelden darf. Nun ist der öffentliche Schlüssel des Clients aber, naja, öffentlich, also wird der Anmeldevorgang signiert. Dies geschieht mit dem privaten Schlüssel des Clients, der natürlich nur dem Client bekannt ist. Wie genau die Überprüfung funktioniert, weiß ich nicht, eine simple Möglichkeit wäre aber folgende (evtl. ist es auch die tatsächlich genutzte):</p>
<p>Der Server sendet eine zufällig generierte Zahl an den Client,  die auch nur einmal verwendet wird (nennt sich NONCE). Der Client verschlüsselt diese Zahl mit seinem privaten Schlüssel und schickt das Ergebnis wieder an den Server. Dieser versucht, die empfangene Nachricht mit dem öffentlichen Schlüssel des Clients zu entschlüsseln. Gelingt ihm dies, so ist es (nahezu) unmöglich, dass jemand anderes als der richtige Client gerade versucht, sich mit dem öffentlichen Schlüssel anzumelden.</p>
<p>Das Verfahren wird allgemein als sicher angesehen und wenn man sich die am häufigsten benutzten Passwörter ansieht, so ist dieses Verfahren im Gegensatz dazu die Definition von Sicherheit.</p>
<p>Zur Einrichtung begibt man sich zunächst an den Client. Hier wird mittels</p>
<blockquote>
<pre>ssh-keygen -t rsa</pre>
</blockquote>
<p>ein Schlüsselpaar generiert. Es ist vermutlich empfehlenswert, eine Passphrase für den Schlüssel zu vergeben, allerdings entfällt dann der Vorteil, dass man sich ohne Passwort anmelden kann. Vergibt man keine, so muss man sicherstellen, dass niemals der private Schlüssel öffentlich bekannt wird.</p>
<p>Es werden zwei Dateien erzeugt, eine mit dem privaten Schlüssel und eine mit dem öffentlichen. Letztere hat die Endung .pub (für public).  Der Inhalt dieser Datei muss auf dem Server an die Datei /home/[user]/.ssh/authorized_keys angefügt werden.</p>
<p>Dieses Vorgehen muss für jeden Client einmal wiederholt werden. Die Clients müssen, wie bereits erwähnt, entsprechend geschützt sein, damit der private Schlüssel nicht bekannt wird.</p>
<p>Unter Windows ist die Erzeugung des Schlüsselpaares etwas umständlicher. Will man diese Art der Authentifizierung z.B. mit PuTTY verwenden, so benötigt man zunächst das Programm <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">PuTTYgen</a>. Hier kann man als Typ SSH2-RSA mit 2048 Bits wählen. Klickt man auf Generate, so muss die Maus erst einige Zeit bewegt werden, damit der Schlüssel möglichst zufällig ist.</p>
<p>Anschließend muss der Inhalt des Textfeldes an die Datei /home/[user]/.ssh/authorized_keys angefügt werden. Dies ist der öffentliche Schlüssel. Den privaten Schlüssel speichert man (save private key), wo man ihn wieder findet.</p>
<p>In Putty muss diese Datei unter SSH-&gt;Auth als Private key file ausgewählt werden. Anschließend sollte die Verbindung ohne Passwort funktionieren.</p>
<p>Nach dieser Anleitung könnte man auf die Idee kommen, auch die Anmeldung an einem ssh-Server, der z.B. über cygwin unter Windows läuft, durch RSA zu ermöglichen. Vorab: Nein.</p>
<p>Warum das nicht so einfach möglich ist, wird schnell klar, wenn man verstanden hat, wie diese Anmeldung unter Linux überhaupt funktionieren kann. Wir melden uns an einem Rechner mit einem Benutzernamen aber ohne dessen Passwort an. Auch in den Dateien, die wir dafür angelegt oder geändert haben, ist das Passwort nirgends gespeichert.  Alles andere wäre auch irrsinnig.</p>
<p>Unter Linux ist das möglich, weil root eine Shell für einen beliebigen Benutzer öffnen kann &#8211; ohne Passwort. Nun läuft der ssh-Server unter dem Benutzer root, also hat der Server dieses Recht. Wir versichern dem Server durch unsere Authentifizierung, dass wir ein bestimmter Benutzer sind und er öffnet für uns die entsprechende Shell. Unter Windows ist es selbst dem Administrator nicht möglich, sich einfach als ein anderer Benutzer auszugeben. Eine Anmeldung ohne Passwort ist ohne weitere Eingriffe also nicht möglich. Natürlich darf der Administrator das Passwort eines Benutzers zurücksetzen und kennt dann das neue Passwort &#8211; aber das wollen wir wohl kaum als Anmeldeprozedur implementieren.</p>
<p>Falls doch jemand voreilig etwas in die authorized_keys eines Windows-Servers eingetragen hat, so ist die Anmeldung von dem eingetragenen Client aus nicht mehr möglich. Also entweder einen anderen Client benutzen oder lokal anmelden und den Eintrag aus der Datei wieder löschen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jediblog.de/ssh-ohne-passwort/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

