http://ovm-kassel.de | Lernjob | |
---|---|
Lernjob IT-BS-VM-LJ-3.3 |
|
Code |
IT-BS-VM-LJ-3.3 |
Autor |
André Bauer |
Datum |
22. Mai 2018 |
Links |
|
Verwandte Literatur |
|
Lizenz |
|
SSH-Client und -Server
1. Was ist SSH?
SSH ist die Abkürzung für
Secure Shell
und wird als Begriff sowohl für das Netzwerkprotokoll als auch für die
zugehörigen Dienstprogramme verwendet.
SSH bietet eine kryptographisch abgesicherte Verbindung zwischen zwei
Systemen und kann mit dem Programm ssh
als interaktive Shell zum
Zugriff und zur Administration entfernter und/oder virtueller Systeme
sowie auch zum Datentransfer mit
sftp
,
scp
und
sshfs
verwendet werden.
2. Voraussetzungen
Im Folgenden wird vorausgesetzt, dass Sie bereits eine
Virtuelle Maschine mit einem Linux-System, wie z. B. Ubuntu, als
Gastsystem eingerichtet haben. Die folgenden Beispiele sollten aber auch auf
andere Distributionen, die auf Debian basieren, übertragbar sein.
Bei Linux-Distributionen, die z. B. auf Redhat basieren,
müssen die Befehle, die zur Installation neuer Pakete dienen,
angepasst werden, so muss unter Redhat yum
statt apt
verwendet werden. Die Namen der Pakete können ggf. abweichen.
3. Einen SSH-Server unter Linux einrichten
Um einen SSH-Server unter Ubuntu einzurichten, genügt es, diesen mit apt
zu installieren:
$ sudo apt update
$ sudo apt install openssh-server (1)
1 | Installation und Start des SSH-Servers. |
Ob bereits ein SSH-Server-Prozess auf einem System läuft, kann mit ps
überprüft werden:
$ ps xa | grep /usr/sbin/sshd
19851 ? Ss 0:00 /usr/sbin/sshd -D (1)
20419 pts/18 S+ 0:00 grep --color=auto /usr/sbin/sshd
1 | Der SSH-Server ist in Betrieb. |
4. Einen SSH-Server von einem Linux-Client verwenden
Da bei den meisten Linux-Distributionen bereits ein SSH-Client vorinstalliert ist, kann der SSH-Server über das Loopback-Netzwerk getestet werden:
$ ssh user@127.0.0.1 (1)
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:x0amQ1jaCO9SJmZjL0jPQuEB4mPEcr67ItNtgVIb8po. (2)
Are you sure you want to continue connecting (yes/no)? yes (3)
Warning: Permanently added '127.0.0.1' (ECDSA) to the list of known hosts.
user@127.0.0.1's password:
Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.13.0-36-generic x86_64)
Last login: Sat May 5 10:05:16 2018 from 127.0.0.1
1 | Statt der IP-Adresse 127.0.0.1 für die Loopback-Schnittstelle, kann
auch der Name localhost verwendet werden. |
2 | Beim ersten Login eines Clients auf einem unbekannten SSH-Server wird zur Kontolle der ECDSA-Key-Fingerprint ausgegeben. |
3 | Der Vorgang wird aus Sicherheitsgründen nur nach einer Bestätigung fortgesetzt. Bei einer bereits genutzten Verbindung kann ein geänderter ECDSA-Key-Fingerprint auf einen Man-in-the-Middle-Angriff hindeuten. |
Anstatt sich über die Loopback-Schnittstelle auf demselben System
per ssh
anzumelden, ist es natürlich auch möglich, sich remote über ein
Netzwerk auf einem anderen System anzumelden.
Für das folgende Beispiel müssen zwei VMs miteinander
vernetzt (siehe Lernjob IT-BS-VM-LJ-3.2 Netzwerke mit Virtualbox) und auf dem
Systen mit der IP-Adresse 10.0.3.10/24
ein SSH-Server eingerichtet sein.
$ ssh user@10.0.3.10
user@10.0.3.10's password:
Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.13.0-39-generic x86_64)
...
Last login: Thu May 10 22:55:06 2018 from 10.0.3.11
user@Linux-VirtualBox:~$
Aufgabe 1
5. Einen SSH-Server von einem Hostsystem verwenden
Für den Zugriff vom Hostsystem auf das Linux-Gastsystem verwenden wir im Folgenden zunächst eine Portweiterleitung. Dazu richten wir eine Portweiterleitung auf den Port 22 des Gastsystems ein, z. B. von Port 8022 auf dem Hostsystem.
Unix-artige Hostsysteme
Auf unixartigen Hostsystemen, wie z. B. Linux oder Mac OS X, kann
ssh
direkt von einem Terminal aus verwendet werden.
Im Unterschied zu Beispiel 2 wird dem SSH-Befehl mit
der Option -p 8022
eine Portnummer, die für die Verbindung mit dem
SSH-Server verwendet werden soll, übergeben. Ohne eine solche Angabe wird
der SSH-Standard-Port 22 verwendet.
$ ssh user@localhost -p 8022 (1)
The authenticity of host '[localhost]:8022 ([127.0.0.1]:8022)' can't be established.
ECDSA key fingerprint is SHA256:x0amQ1jaCO9SJmZjL0jPQuEB4mPEcr67ItNtgVIb8po.
Are you sure you want to continue connecting (yes/no)? yes (2)
Warning: Permanently added '[localhost]:8022' (ECDSA) to the list of known hosts.
user@localhost's password:
Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.13.0-36-generic x86_64)
1 | Verwendung von ssh mit Port 8022. |
2 | Falls vom Hostsystem noch keine SSH-Verbindung zu dem Linux-Gastsystem aufgebaut worden ist, muss auch hier der ECDSA-Key-Fingerprint bestätigt werden. |
Windows-Hostsysteme
Unter Windows kann SSH mit dem SSH-Client PuTTY und den zu gehörigen Programmen PSCP, PSFTP usw. verwendet werden. Eine Anleitung für PuTTY unter Windows zeigt die notwendigen Schritte.
Aufgabe 2
6. Secure Copy (scp
)
Mit Secure Copy (scp
) können Dateien über ein Netzwerk verschlüsselt
kopiert werden. Für das folgenden Beispiel müssen zwei VMs miteinander
vernetzt (siehe Lernjob IT-BS-VM-LJ-3.2 Netzwerke mit Virtualbox) und auf dem
Systen mit der IP-Adresse 10.0.3.10
ein SSH-Server eingerichtet sein.
$ scp srv/index.adoc user@10.0.3.10:srv/ (1)
user@10.0.3.10's password:
index.adoc 100% 95 0.1KB/s 00:00
1 | Kopiert die Datei srv/index.adoc in den Ordner ~/srv auf den
SSH-Server mit der IP-Adresse 10.0.3.10 . |
$ scp user@10.0.3.10:srv/index.adoc srv/ (1)
user@10.0.3.10's password:
index.adoc 100% 95 0.1KB/s 00:00
1 | Kopiert die Datei ~/srv/index.adoc vom
SSH-Server mit der IP-Adresse 10.0.3.10 in den Ordner srv/ . |