SSH und RSYNC

Aus tmuehlenkamp
Wechseln zu: Navigation, Suche

SSH

Als Secure Shell (SSH) wird sowohl ein Netzwerkprotokoll als auch entsprechende Programme bezeichnet, um verschlüsselte Verbindungen zu entfernten Geräten herzustellen. Die häufigsten Anwendungen sind die verschlüsselte Übertragung von lokalen Eingaben oder Dateien (mittels der neueren Protokoll-Version SSH-2). Die letztgenannte Methode ist auch unter dem Akronym SFTP bekannt.

Beispielkonfiguration

Schritt 1: Verbindung zum Client-System über SSH-Verbindung

Vorbereitung: Zunächst einmal muss sichergestellt werden, dass der User sich auf dem Client-System mittels SSH-Verbindung anmelden darf. Dafür bitte ein Terminal öffnen (bei Verwendung einer GUI) oder als Root-User mit dem Client-System per Telnet/SSH verbinden. Danach bitte mit Nano oder einem anderen Editor die folgende Datei bearbeiten:

nano /etc/passwd

Hier bitte den User suchen und in der Zeile entsprechend ändern:

/sbin/nologin ändern in /bin/ash

Aus Sicherheitsgründen bietet es sich auch noch an, die Standardeinstellung hinsichtlich SSH-Verbindungen zu anzupassen (Auskommentieren/Ändern):

nano /etc/ssh/sshd_config

Folgende Einstellung sind empfehlenswert:

Port (between 20.000 andd 30.000) "Hier Port eintragen"

PermitRootLogin No

AllowUsers "Hier User eintragen"

LoginGraceTime "z.B. 180"

MaxAuthTries "z.B. 3"

Danach sollte man sicher zum Client-System verbinden können. Analog sollten diese Anpassungen am Server-System vorgenommen werden.

Schritt 2: Ordner erstellen und Berechtigungen setzen

Als nächstes sollten die Ordner für die Schlüsselpaare mit den entsprechenden Berechtigungen auf dem Client-System gesetzt werden.

chmod g-w /home/your-client-user

Anmerkung: SSH gefällt es nicht, wenn das Home-Verzeichnis Schreibberechtigung für Gruppen besitzt. Das Home-Verzeichnis sollte nur vom User geändert werden dürfen.

mkdir /home/your-client-user/.ssh

chown -R your-user /home/your-user/.ssh

Schritt 3: Erzeugen des Schlüsselpaar und Übertragung auf Server-System

Nun kommen wir zum eigentlichen Erstellen des Schlüsselpaars:

ssh-keygen -t rsa -b 4096

Exkurs SSH-keygen

SSH-Keygen ist ein Programm um Authentifizierung-Schlüssel zu erzeugen, verwalten und umzuwandeln. Dabei können RSA-Schlüssel für SSH-Verbindungen der Version 1 (SSH-1) sowie RSA- oder DSA-Schlüssel für SSH-Verbindungen der Version 2 (SSH-2) erzeugt werden. Unter dem RSA-Kryptosystem wird ein asymmetrisches kryptographisches Verfahren verstanden, das sowohl zur Verschlüsselung als auch zur digitalen Signatur verwendet werden kann. Es verwendet ein Schlüsselpaar, bestehend aus einem privaten Schlüssel, der zum Entschlüsseln oder Signieren von Daten verwendet wird, und einem öffentlichen Schlüssel, mit dem man verschlüsselt oder Signaturen prüft. Der private Schlüssel wird geheim gehalten und kann nur mit extrem hohem Aufwand aus dem öffentlichen Schlüssel berechnet werden. Hier eine Beschreibung und Übersicht der wichtigsten Verzeichnisse und Dateien:

The ssh-keygen utility uses various files for storing public and private keys. The files used by ssh-keygen utility are as follows:

  • $HOME/.ssh/identity: The $HOME/.ssh/identity file contains the RSA private key when using the SSH protocol version 1.
  • $HOME/.ssh/identity.pub: The $HOME/.ssh/identity.pub file contains the RSA public key for authentication when you are using the SSH protocol version 1. A user should copy its contents in the $HOME/.ssh/authorized_keys file of the remote system where a user wants to log in using RSA authentication.
  • $HOME/.ssh/id_dsa: The $HOME/.ssh/id_dsa file contains the protocol version 2 DSA authentication identity of the user.
  • $HOME/.ssh/id_dsa.pub: The $HOME/.ssh/id_dsa.pub file contains the DSA public key for authentication when you are using the SSH protocol version 2. A user should copy its contents in the $HOME/.ssh/authorized_keys file of the remote system where a user wants to log in using DSA authentication.
  • $HOME/.ssh/id_rsa: The $HOME/.ssh/id_rsa file contains the protocol version 2 RSA authentication identity of the user. This file should not be readable by anyone but the user.
  • $HOME/.ssh/id_rsa.pub: The $HOME/.ssh/id_rsa.pub file contains the protocol version 2 RSA public key for authentication. The contents of this file should be added to $HOME/.ssh/authorized_keys on all computers where a user wishes to log in using public key authentication.

Es kann eine Passphrase verwendet werden, muss aber nicht sein.

Im Anschluss wird der Public-Key auf das Server-System übertragen:

ssh-copy-id -i ~/.ssh/id_rsa.pub your-server-user@server-IP -pSSH-Port

SSH-copy speichert den Public-Key in der Datei authorized_keys des Server-Users. Die Dateiberechtigungen sollten auf dem Server-System überprüft und gegebenenfalls angepasst werden.

chmod 600 /home/your-server-user/.ssh/authorized_keys

Wenn alles erfolgreich war, kann der Aufbau der Verbindung getestet werden:

ssh -v your-server-user@server-IP (additionally: -pYourSSH-Port and -i ~/.ssh/id_rsa.pub

RSYNC

RSYNC ist sowohl ein Netzwerkprotokoll als auch ein unter der GPL stehendes Programm zur Synchronisation von Daten in der Regel über ein Netzwerk. Die Synchronisation läuft nur unidirektional, also von einem Quellverzeichnis zu einem Zielverzeichnis, ab.

RSYCN gleicht Dateien zwischen Lokalen- oder Netzwerkverzeichnissen ab. Das Programm gleicht die Größe und die Erstellungszeit der Dateien zwischen Quell- und Zielverzeichnis ab. Durch diese Vorprüfung werden nur jene Dateien behandelt, bei denen es Änderungen gegeben hat. Diese Eigenschaft macht das Programm ideal für die Erstellung von Datensicherungen.

Syntax: rsync [Optionen] Quelle Ziel

Beispiel: rsync -avR /var/www /media/network_share

Erläuterungen zu den Optionen von rsync:

  • -a - fasst folgende Optionen zusammen:
    • -r kopiert Unterverzeichnisse
    • -l kopiert symbolische Links
    • -p behält Rechte der Quelldatei bei
    • -t behält Zeiten der Quelldatei bei
    • -g behält Gruppenrechte der Quelldatei bei
    • -o behält Besitzrechte der Quelldatei bei (nur root)
    • -D behält Gerätedateien der Quelldatei bei (nur root)
  • -v - zeigt während des Synchronisierens alle ausgeführten Schritte an
  • -R - Verzeichnisse rekursiv kopieren (Das Programm ruft sich sich selbst so lange wieder auf, bis alle Unterverzeichnisse kopiert wurden)

Beispiel-Shell-Skript

Um Synchronisationen und Datensicherungen zu automatisieren, bietet sich die Erstellung von Shell-Skripten an.

nano beispielsicherung.sh

Dort könnte das folgende Shell-Skript eingefügt werden:

!/bin/bash

timestamp=`date +%Y%m%d-%H%M`

rsync -av --delete --log-file=/Pfad-zum-Verzeichnis/$timestamp-beispielsicherung.log -e "ssh -pSSH-Port" /Pfad-zum-Quellverzeichnis/ server-user@server-IP:/Pfad-zum-Zielverzeichnis/

Das Shell-Skript wird mit dem folgenden Befehl ausführbar gemacht:

chmod +x beispielsicherung.sh

Ausgeführt kann das Skript mit:

./beispielsicherung.sh

Links

Area Ressource Sprache Thema Link
SSH Wiki DE Übersicht Ubuntuusers Link
SSH Wiki DE Anleitung zur Authentifizierung mit Schlüsselpaaren Link
SSH Wiki DE Synology DiskStation mit SSH-Zertifikaten absichern Link
SSH Blog DE Synology DiskStation: SSH Zugang erlauben Link
SSH Blog DE SSH Zugang ohne Passwort Link
SSH Forum EN Passwordless SSH not working Link
SSH Forum EN SSH permission denied Link
SSH Forum EN SSH authentification refused Link
SSH Blog EN Multiple SSH keys for passwordless logion Link
SSH-keygen Wiki EN Overview SSH-keygen Link
SSH-pass Blog EN Introduction SSHpass Link
SSH-keychain Blog EN Install and configuration of keychain Link
RSYNC Wiki DE Übersicht Wikipedia Link
RSYNC Wiki DE Übersicht Ubuntuusers Link
RSYNC Wiki DE Skript zur Vollsicherung mit RSYNC bei Ubuntuusers Link
RSYNC Blog DE Skript zur Sicherung mit RSYNC Link
RSYNC Blog EN Verwendung von RSYNC in Verbindung mit SSH Link
RSYNC Wiki DE Daten mit RSYNC synchronisieren - Thomas Krenn Link
RSYNC Help EN Daemon Ubuntu Link
RSYNC Help DE Synology Support NAS-Backup Link
RSYNC Forum EN Synology Forum NAS-Backup Link
RSYNC Wiki DE Synology Wiki SSH Link
RSYNC Blog EN Howto - RSYNC usage Link
RSYNC Blog EN Usage of RSYN, Passwordless SSH login with PublicKey or SSHpass Link
RSYNC Blog EN Usage of RSYN, Passwordless SSH login with SSHpass Link
RSYNC Blog DE Howto - RSYNC Skripte Link

Glossary

Abkürzung Bedeutung Anmerkung
GUI Graphical User Interface Benutzeroberfläche
SFTP Secure File Transfer Protocol Netzwerkprotokoll für verschlüsselte Dateiübertragung
SSH Secure SHell Verschlüsselte Netzwerkverbindungen
RSA Rivest Shamir Adleman Kryptosystem