WinCVS - ssh-Login@HOME ohne Passwort

Login ohne Passwort

Im folgenden Text wird eine Möglichkeit beschrieben, wie man WinCVS in Verbindung mit einer secure-Shell ohne Passwortabfrage benutzen kann. Der Fokus liegt auf einer Installation, die "zu Hause" durchgeführt werden kann. Am Ende des Textes gibt es noch einen Hinweis für die Nutzung im FRZ.


Ein bisschen Theorie

ssh bietet drei Möglichkeiten einen Nutzer zu identifizieren. Eine davon funktioniert mittels eines kryptographischen Schlüsselpaares. Einer dieser Schlüssel wird als privat bezeichnet, der andere als public.

Das Prinzip funktioniert folgendermaßen: Der öffentliche Schlüssel ist jedermann zugänglich. Der private oder geheime Schlüssel darf niemandem sonst bekannt sein. Um dem Empfänger eine Botschaft zu übertragen, benutzt man den öffentlichen Schlüssel der Person um die Nachricht zu verschlüsseln. Sie kann nicht mit dem öffentlichen Schlüssel wieder entschlüsselt werden. Der Empfänger verwendet seinen privaten Schlüssel für die Entschlüsselung der Botschaft.

Dieses Verfahren kann auch benutzt werden um die Identität des Kommunikationspartners festzustellen. Dabei wird eine zwischen den zwei Kommunikationspartnern vereinbarte Botschaft mit dem privaten Schlüssel des Senders verschlüsselt. Der Empfänger entschlüsselt diese Botschaft mit dem öffentlichen und kann nun davon ausgehen, dass er mit dem richtigen Partner kommuniziert. Dieses Verfahren wird auch als signieren bezeichnet.

ssh führt eine Datei authorized_keys in der eine Reihe von öffentlichen Schlüsseln geführt werden. Wenn sich jetzt jemand anmelden möchte (ohne dabei sein Passwort eintippen zu wollen) sendet er seinen öffentlichen Schlüssel, den er mit seinem privaten Schlüssel signiert hat. Ist dieser öffentliche Schlüssel in der authorized_keys enthalten und die Signatur ist korrekt, dann wird der Nutzer akzeptiert.


Installation von WinCVS / Putty

Generell gilt: Der Nutzer uw469478 ist hier nur beispielhaft und immer durch das eigene Login zu ersetzen.

Natürlich müssen wir, um WinCVS zu nutzen, es erst einmal installieren. WinCVS findet man unter http://www.wincvs.org/ Alternativ kann das Setup-Programm (verpackt in einem Zip-Archiv) auch von hier gesaugt werden: WinCVS.zip.

Als nächstes benötigen wir eine Secure-Shell. Bekommen können wir eine solche unter . Wir benötigen folgende Programme (alternativ können sie auch gleich von hier heruntergeladen werden:

Diese fünf Programme werden in C:\Programme\Putty (neu anlegen) kopiert. Eine Installationsroutine ist nicht vorhanden. Es gibt auch keinen Eintrag im Startmenü, d.h. wenn eines der Programme gestartet werden soll, muss man mittels des Explorers nach C:\Programme\Putty wechseln und das entsprechende Programm anklickern.


Anmelden bei ganymed

Es ist soweit: wir müssen in die dunklen Welten von UNIX abtauchen. Dazu startet man Putty.exe und verbindet sich mit dem Rechner ganymed.inf.tu-dresden.de. Im Feld Hostname ist der Rechnername ganymed.inf.tu-dresden.de zu setzen und als Protokoll ist SSH zu wählen - siehe Abbildung. Nach drücken des Knopfes Open erscheint eine Konsole.



Putty Configuration
Abbildung 8.1: Putty Configuration

Es wird gefragt, ob die Verbindung zu ganymed aufgebaut werden soll, und nach unseren Nutzerdaten (login/passwd). Danach sollte uns ganymed ungefähr so begrüßen:

Linux ganymed 2.2.20pre10 #1 SMP Fri Oct 19 12:23:10 CEST
2001 i686 unknown

Most of the programs included with the Debian GNU/Linux system are
freely redistributable; the exact distribution terms for each program
are described in the individual files in /usr/share/doc/*/copyright

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Nov 13 18:07:33 2002 from ganymed
Operating system is Linux
ganymed/uw469478 >
		

Das Schlüsselpaar

Als nächstes erzeugen wir unsere Schlüsselpaare. Das erledigen wir mir dem Befehl ssh-keygen.

SSH unterstützt zwei Protokollversionen, die jeweils unterschiedliches Format für die Schlüssel benutzen. Wir erzeugen am besten beide. Für die erste Version mit dem Befehl:

ssh-keygen -t rsa1
		

ssh-keygen fragt, wo es die Schlüssel speichern soll. Wir übernehmen die Voreinstellungen und drücken einfach Enter. Es möchte auch ein Passwort wissen, welches verwendet werden soll. Falls der private Schlüssel doch einmal in fremde Hände fallen sollte bietet das Passwort einen gewissen Schutz vor unberechtigter Nutzung. Um die Sache zu vereinfachten (und da ich dem FRZ traue) benutzen wir kein Passwort und lassen die Eingabe leer (und drücken somit auch hier einfach Enter). Die Nutzung eines Passwortes verkompliziert die Nutzung aber nur unwesentlich und insbesondere in einer UNIX/Linux - Umgebung sind ein paar Schritte mehr notwendig: starten eines ssh-agent ...

In dieser Beschreibung wird davon ausgegangen, dass kein Passwort verwendet wird. Sollte aber jemand Bedenken haben, so empfehle ich ihm durchaus ein Passwort zu verwenden und sich die entsprechenden Veränderungen selbst zu erarbeiten.

Der komplette Vorgang sieht dann ungefähr so aus:

ganymed/uw469478 > ssh-keygen -t rsa1
Generating public/private rsa1 key pair.
Enter file in which to save the key (/usr/users/mat99/uw469478/.ssh/identity):
Created directory '/usr/users/mat99/uw469478/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /usr/users/mat99/uw469478/.ssh/identity.
Your public key has been saved in /usr/users/mat99/uw469478/.ssh/identity.pub.
The key fingerprint is:
5c:08:dd:af:82:da:8a:bc:63:72:26:9f:b5:7f:4e:a5 uw469478@ganymed
ganymed/uw469478 >		
		

(Hinweis: ganymed/uw469478 ist die Eingabeaufforderung und muss nicht geschrieben werden.)

Das Schlüsselpaar für die 2. Version erfolgt äquivalent mit

ssh-keygen -t dsa
		

Hinweis: Sollte etwas schiefgegangen sein, so kann man mit dem Befehl rm -rf ~/.ssh das Verzeichnis löschen und das ganze noch einmal wiederholen.

Wichtig!
Jeder im Besitz unserer privaten Schlüssel ist in der Lage, sich im FRZ ohne Passwort anzumelden. Darum ist es wichtig, sie immer zu hüten - auch auf dem heimischen PC. Die Schlüssel niemals über unsichere Kanäle verbreiten oder per mail an AllUsers@mail.inf.tu-dresden.de schicken.


authorized_keys

Jetzt müssen wir den öffentlichen Schlüssel in die Datei authorized_keys schreiben. Dazu wechselt man mit

cd .ssh		
		

das Verzeichnis. Mit

cat identity.pub id_dsa.pub >> authorized_keys
		

hängt man die Schlüssel an die Datei und wechselt mit

cd
		

zurück in das Homeverzeichnis.


Kopieren von .ssh

irz8006, unser CVS-Server, muss auch noch die Schlüssel erhalten. Da seit dem Hochwasser die Homeverzeichnisse getrennt sind, muss das Verzeichnis mit

scp -r ~/.ssh irz8006:		
		

auf den Rechner kopiert werden (auf den Doppelpunkt achten!). scp fragt auch hier ob die Verbindung etabliert werden soll (yes eintippen) und nach dem Passwort des FRZ-Logins. Der ganze Vorgang sieht dann wie folgt aus:

ganymed/uw469478 > scp -r ~/.ssh irz8006:
The authenticity of host 'irz8006 (141.76.2.7)' can't be established.
DSA key fingerprint is 86:21:28:18:9a:1a:16:ca:7b:ed:17:bf:ab:9b:36:53.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'irz8006,141.76.2.7' (DSA) to the list of known
hosts.
uw469478@irz8006's password:
identity             100%
|************************************************************************************|
531       00:00
identity.pub         100%
|************************************************************************************|
335       00:00
id_dsa               100%
|************************************************************************************|
672       00:00
id_dsa.pub           100%
|************************************************************************************|
606       00:00
authorized_keys      100%
|************************************************************************************|
941       00:00
known_hosts          100%
|************************************************************************************|
608       00:00
ganymed/uw469478 >		
		

Test

Das war es eigentlich schon auf der Unix-Seite. Wenn man jetzt eine Secure-Shell mittels

ssh irz8006		
		

benutzt, sollte der Rechner irz8006 nicht mehr nach einem Passwort fragen. Hier der Beweis:

ganymed/uw469478 > ssh irz8006
Last login: Wed Nov 13 19:18:38 2002 from ganymed.inf.tu-
Sun Microsystems Inc.   SunOS 5.7       Generic October 1998
Sun Microsystems Inc.   SunOS 5.7       Generic October 1998
irz8006:~>		
		

Sehr schön! Sämtliche cvs Kommandos werden jetzt unter UNIX im FRZ ohne Passwortabfrage durchgeführt. (Auf die heimatliche Linux-Kiste muss nur das .ssh-Verzeichnis - entsprechend wie beim irz8006 - kopiert werden und dann entfällt auch hier die nervende Tipperei.)


Die Schlüssel nach Hause holen

Wir benötigen unsere Schlüssel auch auf unserem PC zu Hause. Um pscp.exe - ein sicheres Kopierprogramm - zu nutzen, starten wir mittels Start->Ausführen und Eingeben von cmd eine Konsole. Danach wechselt man in das Verzeichnis C:\Programme\Putty\ und führt den Befehl

pscp -r uw469478@irz8006.inf.tu-dresden.de:.ssh SSH		
		

aus (siehe auch folgende Abbildung).



pscp.exe
Abbildung 8.2: pscp.exe

Unsere Schlüssel sollten sich nun im Verzeichnis C:\Programme\Putty\SSH\ befinden.


Puttygen

Da Putty den erzeugten privaten Schlüssel für SSH2 (id_dsa) nicht von Haus aus lesen kann, muß dieser zunächst mit Puttygen konvertiert werden. Dazu wird der private SSH2 Key id_dsa über den Menüeintrag File -> Load private key zunächst geladen. Der Schlüssel wird dabei ins Putty-Format konvertiert. Save private key speichert den Schlüssel dann als ssh2.ppk im Putty-Format.


PAgent

PAgent verwaltet die Schlüssel. Dazu muß PAgent gestartet werden. Es erscheint im SysTray (Feld links neben der Uhr) ein kleines Symbol: ein Computer mit einem Hut (siehe Abbildung).



Die Windows-Uhr (und links daneben der PAgent)
Abbildung 8.3: Die Windows-Uhr (und links daneben der PAgent)

Mit rechtem Mausklick auf den PAgent können wir unter Add - Keys Schlüssel hinzufügen; wir wählen ssh2.ppk aus unserer Schlüsselsammlung (C:\Programme\Putty\SSH). Im Fenster PAgent Key List sollte unser Schlüssel erscheinen. Sollte bei der Erzeugung der Schlüssel ein Passwort vergeben worden sein, so fragt PAgent dies ab. Siehe auch nachstehende Abbildung.



PAgent Key List
Abbildung 8.4: PAgent Key List

Test mit PLink

Jetzt testen wir unsere Installation. Wieder eine Windows-Konsole (Start->Ausführen->cmd) starten und mittels

plink uw469478@irz8006.inf.tu-dresden.de echo "BlaBla"		
		

versuchen eine Verbindung zu dem Rechner irz8006 aufzubauen, um den Befehl echo "BlaBla" entfernt auszuführen - ohne Passwortabfrage. Der Befehl echo "BlaBla" druckt einfach das Wort "BlaBla" auf dem Bildschirm aus - wird allerdings auf der entfernten Maschine ausgeführt und die Ausgabe erfolgt auf unserer Konsole. Ein erfolgreicher Versuch sollte ungefähr wie folgende Abbildung aussehen.



Test mit Plink
Abbildung 8.5: Test mit Plink

Adminstration von WinCVS

WinCVS wird wie im Teil Konfiguration beschrieben eingerichtet. Allein bei den Angaben zur ssh wird anders vorgegangen: Im Dialog Admin->Preferences wird im Reiter Ports im Eingabefeld für eine alternative rsh folgendes angegeben: C:\Programme\Putty\plink (siehe Abbildung). Das ist schon alles.



WinCVS Preferences
Abbildung 8.6: WinCVS Preferences

Ab jetzt sollte WinCVS nicht mehr nach einem Passwort fragen, wenn eine CVS-Aktion gestartet wird. Allein eine kurze Verzögerung und der blaue "Fischbalken" am unteren Rand sollten anzeigen, dass eine Verbindung zum FRZ aufgebaut wird. Abbildung 20 zeigt einen WinCVS-Client nach der erforderlichen Konfiguration und dem Auschecken des Beispielmodules kinounix.



WinCVS ohne Passwort
Abbildung 8.7: WinCVS ohne Passwort

Hinweise für das FRZ

Auch im FRZ sollte es kein Problem sein, die Programme der Putty-Familie zu benutzen. Es empfiehlt sich, die Programme in einem Verzeichnis unter H:\Putty zu speichern. Die privaten und öffentlichen Schlüssel befinden sich im Verzeichnis H:\.ssh\. Die Einstellungen in WinCVS zu PLink müssen entsprechend geändert werden und nach Starten von PAgent und hinzufügen der Schlüssel sollte auch im FRZ eine Nutzung ohne ständige Passwortabfrage möglich sein.


previous ssh-Login



by s6200595