Forschungszentrum Jülich, ZAM/NIC
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


cygwin & ssh

Eine kostenfreie Unix-Umgebung
mit verschlüsselter Datenkommunikation
für Windows-PCs


Inhaltsverzeichnis:

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


1. Einleitung

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 ).

2. Installation von Cygwin

2.1 Download der Installationsdateien

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.

2.2 Lokale Installation

Nachdem alle Installationsdateien auf der lokalen Festplatte vorliegen, wird die eigentliche Installation im Systempfad C:\Programme wieder durch Aufruf von "Setup" durchgeführt:

Damit ist Cygwin installiert und lauffähig.

Zurück zu Seite 1

2.3 Konfiguration

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:

Für ein bequemeres Arbeiten und zur Datensicherheit können einige kleine Konfigurationsänderungen vorgenommen werden:

  1. cygwin starten
    Eigenschaften (Symbol links oben oder Eigenschaften-Symbol klicken)
    Programm: Normales Fenster, beim Beenden schließen 
    Schriftart: 8x12, beide Schriftarttypen
    Speicher: Alles automatisch
    Bildschirm: Fenster, Ursprüngliche Größe 50 Zeilen
    OK
    im Cygwin-Fenster: EXIT

    Nach dem Neustart sollte Cygwin jetzt mit großem Fenster und gut lesbarer Schrift erscheinen. (Unter Windows-NT/2k sind noch weitere Einstellungen wie Fenstergröße, Linebuffer und Hintergrundfarbe - etwa RGB=239,234,204 - möglich). Die gestartete Default-shell ist "bash" (siehe "man bash"), und in der Titelleiste und im Command-Prompt wird das aktuelle directory angezeigt. Mit "id" kann man nochmals die eigene Benutzeridentität überprüfen.
  2. Besitzt der PC mehrere Partitions oder Festplatten, so bietet es sich an, alle Arbeitsdateien, also auch das Home-Directory von Cygwin, auf der zweiten Partition oder Festplatte etwa unter D:\work\home  abzulegen. Damit wird vermieden, daß bei einer notwendigen Restauration des Betriebssystems (Virenbefall!) die eigenen Arbeitsdateien überschrieben werden:
    @echo off
    C:
    chdir \Programme\cygwin\bin
    set HOME=D:\work\home\meissbu
    bash --login -i

    dieser wird beim Start der shell  als $HOME (Abkürzung "~") übernommen. (Das gleiche gilt auch für alle in C:\autoexec.bat definierten Environment-Variablen). Man kann das leicht mit "echo $HOME" oder dem Kommando "env" überprüfen.

    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

     

  3. Der Suchpfad, den die shell nach Programmen durchsucht, enthält im Default nicht das lokale, aktive Directory ".". Man sollte dies der Bequemlichkeit halber für alle Benutzer in /etc/profile oder nur für sich selbst in $HOME/.profile an die PATH-Variable anhängen. Dies kann z.B. mit dem erweiterten vi-Editor "vim" erfolgen:

    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

     

  4. Damit man auch mal Umlaute schreiben kann, kann man noch die Datei $HOME/.inputrc folgenden Inhalts anlegen:

    # file: $HOME/.inputrc
    set meta-flag on
    set convert-meta off
    set output-meta on

Zurück zu Seite 1

3. Konfiguration von ssh & sshd

3.1    Server-Konfiguration

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".

3.2    Klienten-Konfiguration

Die SSH-Dateien für den Klienten werden im Verzeichnis $HOME/.ssh abgelegt.

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> no

Configuration 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 

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 

Zurück zu Seite 1

4. Beispiele: Login und Dateitransfer

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.

Zurück zu Seite 1

Forschungszentrum Jülich Homepage         FZJ-ZAM/NIC Homepage         Keyword Search         Dokumentationsuebersicht

J.Meißburger, Forschungszentrum Jülich, FZJ-ZAM, dokumentation.zam@fz-juelich.de