
Zentralinstitut für Angewandte Mathematik
D-52425 Jülich, Tel. (02461) 61-6402
Informationszentrum, Tel. (02461) 61-6658
Technische Kurzinformation
FZJ-ZAM-TKI-0375
J.Meißburger
29.01.2002
1. Einleitung
2. Installation von Cygwin
2.1 Download der Installationsdateien
2.2 Lokale Installation
2.3
Konfiguration
3. Konfiguration von ssh & sshd
3.1
Server-Konfiguration
3.2 Klienten-Konfiguration
4. Beispiele: Login und Dateitransfer
Cygwin ist eine Portierung der GNU- und Unix-Entwicklungswerkzeuge auf Windows-Betriebssysteme (Win95b ... Win-ME/2k). Die Unix-Systemaufrufe werden dabei durch eine leistungsfähige und schnelle 32bit-DLL emuliert, und es stehen derzeit ca. 600 Unix-Programme zur Verfügung, darunter die als Standard benutzte "bash"-Shell und viele nützliche Hilfsprogramme wie "man", "make", "gawk" oder "perl". Dieser Funktionsumfang kann jederzeit mit Hilfe der ebenfalls zum Standardumfang gehörenden GNU-C/C++-Kompiler erweitert werden. Die erzeugten Programme (*.exe) sind unter der bash-Shell oder unter COMMAND.COM lauffähig. Die Programme des Cygwin-Projekts werden von redhat.com kostenfrei unter der GNU-General Public License als lauffähige Binaries und als Quellcode angeboten.
Insbesondere enthält die gegenwärtige Distribution bereits lauffähig die OpenSSH-Programme in der Version 3.0.x für SSH-Protokollversion 2, die lediglich noch durch die Generierung der Schlüsseldateien angepaßt werden müssen. Damit stehen dann auf dem Windows-System die benötigten Klienten ssh, scp und sftp sowie die Server sshd und sftp-server für interaktives Login und Dateitransfer zu Verfügung (siehe auch http://www.openssh.org/de/index.html ).
Die Installation kann direkt aus dem Internet oder von einem lokalen Verzeichnis auf der Festplatte aus erfolgen. Hierzu wird einmalig am besten die gesamte Distribution (derzeit 173 MB inclusive Sourcen) von einem der angebotenen Mirror-Server auf ein lokales Sicherungsverzeichnis (etwa D:\Install\Cygwin) zur Aufbewahrung der Installation-Kits heruntergeladen. Damit ist jederzeit eine Nachinstallation von Komponenten auch ohne Internetanschluß möglich. Bei Updates aus dem Netz sollte man allerdings daran denken, auch die lokalen Installationsdateien auf dem aktuellen Stand zu halten.
Mit dem Browser http://sources.redhat.com/cygwin/ öffnen

Rechte Maustaste auf das Cygwin Setup-Icon
"Ziel speichern
unter" auswählen
D:\Install\Cygwin als Zielverzeichnis angeben
D:\Install\Cygwin\Setup.exe ausführen
"Download from Internet" auswählen
D:\Install\Cygwin als Local Package Directory angeben
"Direct Connection" (lädt Mirror-Liste), z.B. ftp://ftp.uni-erlangen.de auswählen
Knopf "View" drücken (die Anzeige wechselt
zwischen "Full", "Partial" und "Category")
In der Ansicht "Full" alle benötigten (oder am besten alle)
Packages in der aktuellen Version durch mehrfaches Klicken in der Spalte
"New" auswählen
Bei Interesse und ausreichend Platz auf der Festplatte "Src?" aktivieren, um auch die
Quelldateien herunterzuladen
Nachdem alle Installationsdateien auf der lokalen Festplatte vorliegen, wird die eigentliche Installation im Systempfad C:\Programme wieder durch Aufruf von "Setup" durchgeführt:
D:\Install\Cygwin\Setup.exe ausführen
"Install from local directory" auswählen
Install root directory: C:/Programme/cygwin, Install
for All, Unix default text file type
Local package directory: D:\Install\Cygwin
Knopf "View" drücken (die Anzeige wechselt
zwischen "Full", "Partial" und "Category")
und die gewünschten Packages (am besten alle vorhandenen) auswählen
"Create Desktop Icon" und "Add to Start
Menu" aktivieren
Damit ist Cygwin installiert und lauffähig.
Cygwin ist direkt und ohne Nachkonfiguration lauffähig. Will man im wesentlichen nur eine bestimmte Anwendung wie etwa "ssh" nutzen, so genügt die einmalige Default-Installation direkt aus dem Netz. Möchte man jedoch Cygwin in vollem Umfang als Unix-Ersatz nutzen, so empfiehlt sich die oben beschriebene Installationsmethode und eine minimale Nachkonfiguration der Arbeitsumgebung.Vor der Installation oder bei Problemen lohnt immer ein Blick in die aktuelle FAQ unter http://cygwin.com/faq.
Zunächst einige kurze Hinweise für Windows-Benutzer:
Unix ist stets case-sensitiv, d.h. Groß- und Kleinbuchstaben werden streng unterschieden. Cygwin macht hier mit Rücksicht auf die DOS/Windows-Konventionen gewisse Ausnahmen (läßt sich auch abstellen), man sollte aber Dateinamen stets Unix-konform wählen (am einfachsten alles klein schreiben!). Dateinamen über 8 Zeichen vermeiden zudem Überraschungen beim Transfer zwischen unterschiedlichen Betriebssystemen etwa bei Webseiten mit case-sensitiven Links.
Für ein bequemeres Arbeiten und zur Datensicherheit können einige kleine Konfigurationsänderungen vorgenommen werden:
@echo off C: chdir \Programme\cygwin\bin set HOME=D:\work\home\meissbu bash --login -i |
Manche Programme (etwa ssh) benutzen auch das in /etc/passwd angegebene Home-Verzeichnis. Deshalb muß dieses ebenfalls wie in folgendem Beispiel für den Benutzer "meissbu" angepaßt werden:
meissbu::500:544::/cygdrive/d/work/home/meissbu:/bin/bash |
cd // gehe ins Home-Directory vim .profile // starte den vim-Editor i // insert mode # file: $HOME/.profile PATH=$PATH:. // erweitert den Suchpfad $PATH um das aktuelle Verzeichnis alias more="less" // definiert den Standardbefehl "more" alias ldir="ls -galF" // definiert den Alias ldir zur Anzeige aller Dateien <escape> // verläßt den Insert-Mode ZZ // speichert und schließt den Editor |
# file: $HOME/.inputrc set meta-flag on set convert-meta off set output-meta on |
Wenn bei der Installation die Package "openssh: The OpenSSH client and server programs" ausgewählt wurde, sind alle benötigten Programme bereits lauffähig vorhanden. Für den SSH-Server "sshd" müssen nun noch die Host-Schlüsselpaare und die Konfigurationsdatei erstellt werden:
Die letzte Frage auf NT-oder Windows 2000-Systemen ermöglicht die Installation von sshd als NT-Dienst. Damit kann der sshd-Server auch automatisch beim Booten ohne ein interaktives Login gestartet werden..
Das Kommando "dir ssh" zeigt die generierten Konfigurations- und Schlüsseldateien an:
/etc/ssh_config
/etc/sshd_config
/etc/ssh_host_key
/etc/ssh_host_key.pub
/etc/ssh_host_rsa_key
/etc/ssh_host_rsa_key.pub
/etc/ssh_host_dsa_key
/etc/ssh_host_dsa_key.pub
ssh_config ist die systemweit gültige Konfigurationsdatei für den ssh-Klienten, sshd_config die Default-Konfiguration für den ssh-Server. Hier können auf Wunsch noch Einstellungen zur Art der Benutzer-Authentisierung vorgenommen werden. Wer den Zugriff nur auf bestimmte Benutzer und/oder Klienten beschränken möchte, kann dies in der /etc/sshd_config-Datei noch mit Hilfe des Schlüsselwortes "AllowUsers" tun (siehe "man sshd"). Der Start des sshd-Servers erfolgt einfach durch Aufruf des Kommandos "sshd".
Die SSH-Dateien für den Klienten werden im Verzeichnis $HOME/.ssh abgelegt.
cd
ssh-user-config
Shall I create an SSH1 RSA identity file for you ? <yes/no> yes
Enter passphrase (empty for no passphrase): {geeignetes Passwort}
Enter same passphrase again: {Wiederholung Password}
Do you want to use this identity to login to this machine <yes/no> no
Shall I create an SSH2 RSA identity file for you? <yes/no> yes
Enter passphrase (empty for no passphrase): {geeignetes Passwort}
Enter same passphrase again: {Wiederholung Password}
Do you want to use this identity to login to this machine <yes/no>
yes
Shall I create an SSH2 DSA identity file for you? <yes/no> yes
Enter passphrase (empty for no passphrase): {geeignetes Passwort}
Enter same passphrase again: {Wiederholung Password}
Do you want to use this identity to login to this machine <yes/no> noConfiguration finished. Have fun!
Die gerade generierten öffentlichen Schlüssel identity.pub (ssh Protokoll Version 1), id_rsa.pub bzw. id_dsa.pub müssen dann auf die Zielsysteme übertragen und dort in der Datei
$HOME/.ssh/authorized_keys (Protokoll Version 1) bzw.
$HOME/.ssh/authorized_keys2 (Protokoll Version 2)
abgelegt werden. Die Server-Schlüssel der Zielsysteme werden entweder von Hand oder automatisch beim ersten Login auf einem Zielsystem im Pfad $HOME/.ssh des Klienten als
$HOME/.ssh/known_hosts abgelegt.
Das erste Beispiel zeigt das erstmalige Login zu einem Zielrechner, bei dem der Host-Schlüssel des Servers zur Liste der bekannten Rechner in .ssh/known_hosts hinzugefügt wird:

Das zweite Beispiel zeigt den Zugriff auf die Festplatten eines PCs mit Hilfe des gesicherten sftp-Protokolls (eine Alternative hierzu wäre das ebenfalls sichere "scp"-Programm):

In beiden Fällen wird zur Benutzung der eigenen Schlüssel als Identifikation auf dem Zielrechner das mit ssh-user-config vergebene Paßwort benutzt, das deshalb nicht trivial und niemandem als dem Eigentümer selbst bekannt sein sollte.
J.Meißburger, Forschungszentrum Jülich, FZJ-ZAM, dokumentation.zam@fz-juelich.de