Fernzugriff mit SSH
Links
Zielsetzung
Beschreibung der Programme des Paketes OpenSSH.
Das Paket OpenSSH bietet Programme, die einen Fernzugriff auf andere Netzwerknoten und Dateitransfer anbieten. Alle Programme arbeiten mit Verschlüsselung.
Verschlüsselung
Verschlüsselung ist die Veränderung von Daten, damit diese von Unbefugten nicht verstanden werden können.
Eine Verschlüsselung benutzt ein Geheimnis (Passwort). Wer das Geheimnis kennt, kann die Verschlüsselung rückgängig machen.
Es gibt 2 Typen von Verschlüsselung:
- Symmetrische Verschlüsselung: Für die Verschlüsselung und Entschlüsselung wird das gleiche Geheimnis verwendet.
- Vorteil: einfaches Verfahren, schnell
- Nachteil: Wenn Knoten A das Geheimnis kennt, weil er verschlüsseln muss, kann er jede andere Nachricht auch entschlüsseln. Man muss also dem Knoten A vollkommen vertrauen.
- Asymmetrische Verschlüsselung: Das Verschlüsseln benutzt ein anderes Geheimnis (öffentlicher Schlüssel) als das Entschlüsseln (privater Schlüssel).
- Vorteil: Jeder kann verschlüsseln, wenn er den öffentlichen Schlüssel kennt. Aber nur der Besitzer des geheimen Schlüssels kann entschlüsseln. Damit kann der öffentlichen Schlüssel jedermann bekannt gemacht werden, und jedermann kann uns eine verschlüsselte Nachricht schicken. Aber nur wir mit dem privaten Schlüssel können solche Nachrichten wieder entschlüsseln.
- Nachteil: komplizierter, langsamer
OpenSSh verwendet beide Verfahren:
- Zuerst wird asymmetrische Verschlüsselung zum Verbindungsaufbau verwendet.
- Dann wird ein zufälliges Geheimnis erzeugt und dem Partner mitgeteilt.
- Der Rest der Kommunikation arbeitet dann mit dem temporäten Geheimnis.
Schlüsselverwaltung für asymmetrische Verschlüsselung
Erzeugen eines Schlüsselpaares
ssh-keygen -t rsa -b 4096
cat $HOME/.ssh/*.pub
- Es wird ein Verzeichnis $HOME/.ssh erzeugt und darin zwei Dateien angelegt:
- id_rsa Der private Schlüssel
- id_rsa.pub Der öffentliche Schlüssel
Beim Anlegen wird nach einem Passwort gefragt, mit dem der private Schlüssel geschützt wird. Nur wer das Passwort kennt, kann den privaten Schlüssel benutzen.
Installieren des öffentlichen Schlüssels auf einem anderen Netzwerknoten
# normalerweise, wenn nur ein Schlüsselpaar existiert:
ssh-copy-id hm@host
# wenn nur mehrere Schlüsselpaar existieren oder ein anderer Port verwendet wird:
ssh-copy-id -p 22 -i ~/.ssh/id_rsa hm@hamatoma.de
- die Adresse hm@host enthält den Benutzernamen auf dem anderen Knoten (hier hm) und die Netzwerkadresse des anderen Knotens (hier hamatoma.de)
Das Passwort in der Session merken
Es gibt ein Programm ssh-add
, das erlaubt, das Passwort für den privaten Schlüssel nur einmal einzugeben. Solange, bis sich der Benutzer abmeldet.
Arbeiten im Netzwerk
Anmelden auf einem anderen Netzwerkknoten
- ssh-add schon gestartet?
# normalerweise:
ssh huber@bug.hamatoma.de
# Bei einem anderen Port:
ssh -p 123456 huber@bug.hamatoma.de
Dateien kopieren mit scp
NAME=huber
SERVER=$NAME@bug.hamatoma.de
set -x
# von lokal auf den Partnerknoten:
echo "Hi peer!" >/tmp/data.txt
scp -p /tmp/data.txt $SERVER:/tmp
# vom Partnerknoten auf lokal:
scp -p $SERVER:/tmp/data.txt /tmp/data2.txt
cat /tmp/data2.txt
# Bei einem anderen Port:
ssp -p -P 123456 data $SERVER:/tmp
- die Option -p sorgt dafür, dass die Dateirechte auch übertragen werden (wenn möglich)
- die Option -P <port> erlaubt es, die Port anzugeben.
Dateien kopieren mit rsync
rsync ist ein Programm, das intelligent Dateien kopiert: Es werden nur Dateien kopiert, die neu sind oder nicht geändert wurden. Das ist ideal für Backup.
rsync arbeitet lokal oder mit Netzwerkknoten.
NAME=huber
SERVER=$NAME@bug.hamatoma.de
set -x
# von lokal auf den Partnerknoten:
rsync -a data.txt $SERVER:/tmp
# vom Partnerknoten auf lokal:
rsync -a $SERVER:/tmp/data.txt data2.txt
# Bei einem anderen Port:
ssp -p -P 123456 data $SERVER:/tmp
Externes Dateisystem einhängen: sshfs
Zum einfachen Dateiaustausch dient das Kommando
sshfs USERNAME@192.168.1.1:/home/USERNAME ~/srv/
Dabei wird das entfernte Verzeichnis /home/USERNAME unter dem Verzeichnis ~/srv verfügbar.