Linux als SOHO-Server

für Linux- und Windows-Clients
http://linux.eusterholz.dyndns.org

Kapitel:

Home
Debian Installation
Debian Etc.
Internet-Zugang
Telnet
FTP
r-Utilities
SSH
Printing
NTP
Nameserver
NFS/NIS/Automount
Samba (SMB-Server)
Apache (WEB-Server)
Modem / ISDN
Backup
Etc.


Vorbereitung

[ Vorbereitung ] SSH Beispiele ] SSH unter Windows ]


Auf der vorliegenden Seite wird die Installation/Konfiguration von SSH unter Debian GNU/Linux vorgestellt. Wie schon erwähnt, wird unter Debian die Version: 'OpenSSH' verwendet. Weiterhin werden auf dieser Seite unterschiedliche Autorisierungsverfahren vorgestellt. Authentisierung kann entweder über einen Schlüssel oder über normale Benutzer-Passwörter stattfinden. Liegt kein Schlüssel vor, wird nur das Passwort verwendet. Bei der Authentifizierung mittels Schlüssel wird im Folgenden, nicht im einzelnen auf die einzelnen Schlüsselarten und deren Vor- und Nachteile eingegangen, sondern vielmehr auf das Prinzip anhand von Beispielen. In den angeführten Beispielen wird der dsa-Schlüssel verwendet.

Installation / Konfiguration

Unter Debian GNU/Linux wird standardmäßig bei der Grundinstallation SSH mitinstalliert. Sollte dieses nicht der Fall sein, so kann das Paket: 'ssh' mittels 'apt-get install ssh' nachinstalliert werden. Im SSH-Packet von Debian befindet sich der Server- und Client-Anteil ('sshd' und 'ssh'). Nach der Installation (Basis-Installation) werden folgende Dialoge durchlaufen:

  • Möchten Sie /usr/lib/ssh-keysign SUID-Root installieren? <Ja>
  • Möchten Sie den sshd Server starten? <Ja>
  • HINWEIS: Weiterleiten von X11 und Berechtigungen ist abgeschaltet. <Ok>

Ein erneuter Durchlauf des Installations-Dialoges kann mit: 'dpkg-reconfigure ssh' wiederholt werden.

Als Standartport wird bei SSH der Port: '22' verwendet, es sollte in der Datei: '/etc/services' geprüft werden, ob dieser Port für 'UDP' und 'TCP' frei gegeben ist:

Auszug aus: /etc/services (ca. Zeile: 30)

fsp         21/udp     fspd
ssh         22/tcp                     # SSH Remote Login Protocol
ssh         22/udp

telnet      23/tcp

Der SSH-Server: 'sshd' arbeitet in der Regel als eigener Dämon, er kann aber auch vom Super-Dämon: 'inetd' gestartet werden, jedoch ist die Dämon-Methode deutlich schneller. Die entsprechende Startdatei  für den SSH-Dämon ist: '/etc/init.d/ssh', sie wird z.B. beim Hochlauf des Systems genutzt und startet den SSH-Server.

Die Konfiguration von SSH ist in zwei Dateien aufgeteilt, einer Server- und einer Client-Konfigurationsdatei ('sshd.config' und 'ssh.config'). Die Konfigurationsdateien befinden sich im Verzeichnis: '/etc/ssh/'. Beide Dateien sind nach der Installation schon sinnvoll vorkonfiguriert, eine separate Konfiguration ist nur notwendig, falls bestimmet Sicherheits-Mechanismen gefordert sind. Eine genaue Beschreibung der Konfigurationsdateien sind den Manualseiten und der Dokumentation zu OpenSSH zu entnehmen.
Bei der Client-Konfigurations kann jeder Benutzer des Systems eine eigene Konfigurationen in einer Datei: '~/.ssh/config' vorzunehmen. Existiert die Datei im home-Verzeichnis des Benutzers, so wird das Kommando: 'ssh' diese beim Start einlesen, ansonsten werden die Informationen der globalen Datei unter: '/etc/ssh/ssh.config' entnommen.

Weiterhin befinden sich im Verzeichnis: '/etc/ssh/' die bei der Installation generierten Schlüsselpaare (Public- und Privat-Key). Die Schlüssel werden vom Server benutzt, um sich gegenüber unterschiedlichen Clients zu authentifizieren. Unter Debian-Sarge wird defaultmäßig SSH2 verwendet, es liegt je ein RSA- und DSA-Schlüsselpaar vor ('ssh_host_rsa_key.pub', 'ssh_host_rsa_key.pub', 'ssh_host_dsa_key.pub' und 'ssh_host_dsa_key.pub').

SSH mit Passwort

Für die Nutzung von SSH mittels Passwort brauch eigentlich nichts beachtet oder konfiguriert werden. Ist beim Versuch, einen fremden Rechner zu kontaktieren, keine Schlüsseldateien zur Authentifizierung vorhanden, wird automatisch nach dem Passwort gefragt. Im Folgenden eine solche Beispielsitzung:

linux@experimental:~$ ssh merlin
Password:********
Linux experimental 2.6.8-1-386 #1 Thu Nov 25 04:24:08 UTC 2004 i686 GNU/Linux

The programs included with the Debian GNU/Linux system are free software;
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: Thu Jan 27 16:49:10 2005 from experimental.eusterholz.tld
linux@merlin:~$

Der Benutzer: 'linux' auf dem Rechner: 'experimental' versucht eine SSH-Sitzung auf den entfernten Rechner: 'merlin' aufzubauen. Nach Eingabe des Passworts, wird der Zugang als Benutzer: 'linux' auf dem Rechner: 'merlin' gewährt. Die Übertragung des Passworts und auch der folgenden Daten, findet dabei in verschlüsselter Form statt.

SSH ohne Passwort

Ähnlich wie die r-Utilities, bietet SSH auch die Möglichkeit, sich ohne Angabe eines Passwortes auf einem entfernten System anzumelden. Um dieses zu realisieren, können z.B. zwei Verfahren angewendet werden. Zum einen kann mit der ~/.shosts-Datei gearbeitet werden, zum anderen kann eine Authentifizierung über Hostschlüssel erfolgen.

Authentifizierung mittels ~/.shosts

Die Authentifizierung mittes ~/.shosts-Datei ist analog zum alten ~/.rhosts-Dateimechanismus zu sehen (vgl. Kapitel: r-Utilities), jedoch ist die Authentizität des Clients und des Servers gesichert und auch der weitere Datentransfer findet verschlüsselt statt.

Authentifizierung mittels Hostschlüssel

Für die Authentifizierung mittels Hostschlüssel sind zwei Schritte notwendig:

  • Der Benutzer muss ein Schlüsselpaar erzeugen (Public- und Private-Key)
  • Der öffentliche Schlüssel muss auf den entfernten Rechner bereitgestellt werden.

Danach sollte ein passwortfreier Zugang zum entfernten Rechner möglich sein.

Erzeugen eines Schlüsselpaar

Mit dem Tool: 'ssh-keygen' kann jeder Benutzer sich ein Schlüsselpaar erzeugen. Hier ein Beispiel zur Generierung eines 1024-Bit langen dsa-Keys für das SSH-Protokoll der Version 2:

linux@experimental:~$ ssh-keygen -b 1024 -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/linux/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/linux/.ssh/id_dsa.
Your public key has been saved in /home/linux/.ssh/id_dsa.pub.
The key fingerprint is:
08:21:ce:eb:71:4f:f7:fc:e3:f6:2d:01:ca:0d:f2:bd linux@experimental
linux@experimental:~$

Standardmäßig werden die Schlüssel im Verzeichnis: '~/.ssh' abgelegt, die Frage diesbezüglich brauch nur bestätigt werden. Für einen passwortfreien Zugang, müssen die Fragen bezüglich: 'passphrase' nur bestätigt werden, andernfalls wird bei jeder Verbindung nach der 'passphrase' gefragt. Nach der Generierung, sollten im Verzeichnis: '~/.ssh' die Dateien: 'id_dsa' (Privat-Key) und 'id_dsa.pub' (Public-Key) vorliegen.

Bereitstellen des öffentlichen Schlüssels

Nach der Erzeugen der Schlüssel, muss der öffentlichen Schlüssel auf dem entfernten Rechner übertragen werden, das Übertragen kann z.B. mit 'scp' oder im primitivsten Fall auch z.B. mittels Diskette erfolgen. Anschließend muss der öffentliche Schlüssel (z.B.: 'id_dsa.pub') am Ende der Datei: '~/.ssh/authorized_keys' angehangen werden. Diese Datei enthält eine Liste sämtlicher öffentlicher Schlüssel von Rechnern, die sich ohne Passwort anmelden dürfen. Im Folgenden ein Bsp. zum Anhängen des öffentlichen Schlüssel:

linux@merlin:~$ cat id_dsa.pub >> ~/.ssh/authorized_keys

Falls das Verzeichnis: '~/.ssh' nich vorhanden ist, kann es einfach mit den Rechten: '700' angelegt werden. Die Datei: 'authorized_keys' wird, falls nicht schon vorhanden, durch das Kommando: 'cat' angelegt. Die Datei sollte die Rechte: '600' haben.

Viel komfortabler kann unter OpenSSH die Bereitstellung des öffentlichen Schlüssels mit dem Programm: 'ssh-copy-id' erfolgen. Dabei wird der öffentliche Schlüssel übertragen und anschließend in der Datei: '.ssh/authorized_keys' eingekettet. Hierzu ein Beispiel zur Anwendung:

linux@experimental:~$ ssh-copy-id -i ~/.ssh/id_dsa.pub linux@merlin
15
linux@merlin's password:********
Now try logging into the machine, with "ssh 'linux@merlin'", and check in:

.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

linux@experimental:~$

Der Benutzer: 'linux' auf dem Rechner: 'experimental' überträgt seinen öffentlichen Schlüssel auf den entfernten Rechner: 'merlin'. Bevor die Übertragung beginnt, muss noch das Passwort eingegeben werden. Nach der Übertragung wird der öffentliche Schlüssel in der lokalen Datei: '~/.ssh/known_hosts' der des Remote-Systems aufgenommen.

Anmerkungen

Im Normalfall werden Logging-Ausgaben vom SSH-Dämon über 'syslog' in der Datei: '/var/log/auth.log' geschrieben. Bei Problemen mit SSH-Verbindungen sollte man sich zusätzliche Infos mit der Option '-v' anzeigen lassen (z.B.: 'ssh -v merlin').

Bei der Installation des SSH-Dämons werden normalerweise die nötigen Schlüsselpaare des Systems erzeugt, um diese nachträglich zu erstellen/erneuert, geht man als Benutzer: 'root' wie folgt vor:

/etc/init.d/ssh stop
rm -f /etc/ssh/ssh_host*

ssh-keygen -f /etc/ssh/ssh_host_key -N '' -t rsa1
ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsa
ssh-keygen -f /etc/ssh/ssh_host_dsa_key -N '' -t dsa

/etc/init.d/ssh start

Zunächst ist der SSH-Dämon zu stoppen, danach sollten die vorhanden Schlüssel gelöscht werden.
Mit den folgenden Befehlen können nun die Schlüssel für SSH1 ('rsa1') und zwei Schlüssel für SSH2 ('rsa', 'dsa') erzeugt werden.
Zum Schluss muss der SSH-Dämon wieder gestartet werden.

Weitere Infos

Homepage: OpenSSH http://www.openssh.org/
Manualseiten zu: ssh; sshd_config; ssh_config man ssh; man sshd_config; man ssh_config
System-Dokumentation: ssh /usr/share/doc/ssh
SSH-FAQ http://www.employees.org/~satch/ssh/faq/ssh-faq.html

Home ] Nach oben ] [ Vorbereitung ] SSH Beispiele ] SSH unter Windows ]

letzte Änderung: 13. März 2006

 

Copyright © 2004 Norbert Eusterholz