Einführung
Dieser Artikel über das Remote-Zugriffs-Protokoll SSH unterstützt Sie bei dessen Einrichtung, Konfiguration und Verwendung in Kombination mit Ihren Hetzner Produkten.
Was ist SSH?
SSH ist ein voll verschlüsseltes Protokoll, welches den Fernzugriff auf die Shell von UNIX-basierten Systemen (wie Linux, BSD und MacOS) ermöglicht. Darüber hinaus bietet das Protokoll eine Schlüssel-basierte Authentifizierung, die Möglichkeit für Dateiübertragungen und Tunneling.
Wie erhalte ich einen SSH Server?
Hetzner-Produkte mit SSH-Zugang:
- eingeschränkter Zugriff
- Webhosting (zur Verwaltung und Bearbeitung von Web-Dateien und Skripten)
- Level 9
- Level 19
- Storage Boxes (nicht interaktiv, nur für SCP und Rsync)
- Managed Server (kundenspezifische Software-Installation/Konfiguration und Dateiverwaltung)
- Webhosting (zur Verwaltung und Bearbeitung von Web-Dateien und Skripten)
- voller Root-Zugriff
- dedizierte Root-Server
- Cloud-Server
Ein SSH-Server ist bereits in unseren Standardimages enthalten, die als automatische Installation über den Robot oder bei Nutzung der anpassbaren Installation über das Installimage-Skript im Rescue-System verfügbar sind. Nach Abschluss der Installation können Sie sich einfach per SSH mit dem installierten System verbinden.
Wenn Sie das Betriebssystem anderweitig selbst installiert haben, müssen Sie ggf. einen SSH-Dienst im System manuell nach-installieren:
Betriebssystem | Installation |
---|---|
Debian/Ubuntu | apt install openssh-server |
CentOS/RHEL | yum install openssh-server |
SuSE | zypper in openssh |
Arch Linux | pacman -S openssh |
Gentoo | emerge -av openssh |
Windows | Microsoft Dokumentation |
MacOS | systemsetup -setremotelogin on |
In bestimmten Fällen muss der Dienst anschließend noch manuell gestartet werden. Wenn Sie eine Firewall verwenden, müssen Sie Port 22 für SSH öffnen.
Wie erhalte ich einen SSH Client?
- Unter Linux, BSD und MacOS ist ein SSH-Client generell bereits vorinstalliert, kann jedoch bei Bedarf leicht über die jeweilige Paket-Verwaltung nachinstalliert werden.
- Da Windows keinen integrierten SSH-Client mitliefert, empfehlen wir hier die Installation des Tools
PuTTY
.
Betriebssystem | Installation |
---|---|
Debian/Ubuntu | apt install openssh-client |
CentOS/RHEL | yum install openssh-clients |
SuSE | zypper in openssh |
Arch Linux | pacman -S openssh |
Gentoo | emerge -av openssh |
Windows | PuTTY von greenend.org.uk |
MacOS | Über Kommandozeile verfügbar |
Wie verwende ich meinen SSH Client, um eine Verbindung zum Server herzustellen?
-
Wenn Sie ein UNIX System (Linux/BSD/MacOS) nutzen, geben Sie bitte folgenden Befehl in Ihr Terminal ein, um eine SSH-Verbindung aufzubauen:
ssh <user>@<IP_oder_domain>
Bitte ersetzen Sie dazu
<user>
mit dem entsprechenden Benutzernamen (in der Regel 'root') und<IP_oder_domain>
mit der IP-Adresse oder Domain Ihres Produktes. -
Wenn Sie
Putty
verwenden, geben Sie Ihren DNS-Servernamen oder dessen IP-Adresse ein. Wählen Sie (falls notwendig) SSH und Port 22 aus und klicken Sie auf Verbinden. Danach werden Sie zur Eingabe von Benutzername (in der Regelroot
) und Passwort aufgefordert. Wenn Sie diese korrekt eingegeben haben, werden Sie ins System eingeloggt.
Wie stelle ich sicher, daß ich mich mit dem richtigen Server verbinde?
Beim erstmaligen Verbinden mit einem Server erscheint eine Anzeige, die den Benutzer auffordert den sogenannten Fingerprint (Fingerabdruck) des Servers zu prüfen und zu bestätigen. Der Fingerprint ist ein verkürzte Darstellung des öffentlichen Schlüssels des Servers.
The authenticity of host 'example.com (10.0.0.1)' can't be established.
RSA key fingerprint is SHA256:DlxqI4BctJqAgyCfyExywbm9a7qdL7nqfMKgoQuGp5w..
Are you sure you want to continue connecting (yes/no)?
Je nachdem welcher Schlüssel für die Verbindung verwendet wird, ändert sich die Ausgabe. Neben RSA sind DSA, ECDSA und ED25519 gängige Schlüsseltypen, wobei DSA nicht mehr verwendet werden sollte und ab OpenSSH 7 standardmäßig nicht mehr genutzt wird.
Bei der automatischen Installation via Hetzner Robot werden die Fingerprints angezeigt und zusätzlich per E-Mail übermittelt. Auch bei der Aktivierung des Rescue-Systems werden dessen Fingerprints im Hetzner Robot angezeigt.
Sollte beim erneuten Verbinden folgende Warnung erscheinen, sollte man diese Ernst nehmen:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:DlxqI4BctJqAgyCfyExywbm9a7qdL7nqfMKgoQuGp5w.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending ED25519 key in /home/user/.ssh/known_hosts:1
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle
attacks.
Permission denied (publickey,password).
Diese Warnmeldung wird angezeigt, wenn sich der Fingerabdruck des Ziel-Systems ändert, z.B. beim Booten des Rescue-Systems oder bei der Installation eines neuen Betriebssystems. In diesem Fall entfernen Sie einfach den falschen Fingerabdruck lokal mit folgendem Befehl:
ssh-keygen -R <IP_oder_domain>
Wenn Sie in der Vergangenheit noch keine Verbindung zu einem anderen Betriebssystem unter derselben IP oder Domain hergestellt haben, sollte die Warnung vor einem Man-in-the-Middle-Angriff ernst genommen werden. In einem solchen Fall sollte die Verbindung unterbrochen und eine KVM-Konsole bestellt werden, um die Situation innerhalb des laufenden Systems zu überprüfen.
Wie erzeuge ich einen neuen SSH Host-Key?
Bei der automatischen Installation via Hetzner Robot oder dem Installimage Script
im Rescue-System werden in der Regel alle Host-Schlüssel neu generiert.
Um in einem installierten System einen Schlüssel auszutauschen, wird
ssh-keygen
verwendet. Eine Liste aller vorhanden Keys (ssh_host*)
findet man unter /etc/ssh/
ls -l /etc/ssh
total 280
-rw-r--r-- 1 root root 242091 Oct 3 2014 moduli
-rw-r--r-- 1 root root 1689 Oct 17 2014 ssh_config
-rw-r--r-- 1 root root 2530 Dec 30 10:51 sshd_config
-rw------- 1 root root 668 Dec 30 10:44 ssh_host_dsa_key
-rw-r--r-- 1 root root 622 Dec 30 10:44 ssh_host_dsa_key.pub
-rw------- 1 root root 227 Dec 30 10:44 ssh_host_ecdsa_key
-rw-r--r-- 1 root root 194 Dec 30 10:44 ssh_host_ecdsa_key.pub
-rw------- 1 root root 432 Dec 30 10:44 ssh_host_ed25519_key
-rw-r--r-- 1 root root 114 Dec 30 10:44 ssh_host_ed25519_key.pub
-rw------- 1 root root 1675 Dec 30 10:44 ssh_host_rsa_key
-rw-r--r-- 1 root root 414 Dec 30 10:44 ssh_host_rsa_key.pub
Um z.b. den ED25519 Key zu erneuern lautet das Kommando:
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N
Generating public/private ed25519 key pair.
/etc/ssh/ssh_host_ed25519_key already exists.
Overwrite (y/n)? y
Your identification has been saved in /etc/ssh/ssh_host_ed25519_key.
Your public key has been saved in /etc/ssh/ssh_host_ed25519_key.pub.
The key fingerprint is:
d5:1d:28:01:f7:c5:0f:fb:7b:42:07:08:1f:93:1c:c6 root@your_host
The key's randomart image is:
+--[ED25519 256]--+
| ..o+o=o |
| .o+Eoo. |
| .+o+.+ |
| . o o .|
| S o |
| .o|
| . o|
| o.|
| o|
+-----------------+
Wie funktioniert die Dateiübertragung per SSH?
SCP
Das für die Abwicklung einer Dateiübertragung benötigte Protokoll SCP nutzt eine darunter liegende SSH-Verbindung für die vollständig verschlüsselte Authentifizierung und Übertragung des Datenstroms. Daher ist ein SSH-Server auf dem jeweiligen anderen System erforderlich.
SCP kann in Verbindung mit einigen Remote-Dateimanagern, aber auch auf der Linux-, BSD- oder MacOS-Shell verwendet werden. Um eine Dateiübertragung von Ihrem System auf ein anderes oder umgekehrt zu starten, verwenden Sie einfach die folgende Befehlssyntax:
scp <Quelle> <Ziel>
Um eine Datei von System-A
nach System-B
zu kopieren, während Sie auf System-A
angemeldet sind:
scp /pfad/zur/datei holu@System-B:/pfad/zur/ziel-datei
Um eine Datei von System-A
nach System-B
zu kopieren, während Sie auf System-B
angemeldet sind:
scp holu@System-B:/pfad/zur/datei /pfad/zur/ziel-datei
Um den Inhalt eines Ordners (alle Dateien und Unterverzeichnisse) rekursiv zu kopieren, hängen Sie einfach -rp
an:
scp -rp holu@System-B:/pfad/zum/ordner/ /pfad/zum/ziel-ordner/
SFTP
Das Protokoll SFTP (Secure File Transfer Protocol) wurde als Alternative zu FTPS (per TLS verschlüsseltes FTP) entwickelt und verwendet im Vergleich dazu nur eine Verbindung, welche über eine verschlüsselte SSH-Verbindung abgewickelt wird. Daher ist wie bei SCP ebenfalls ein SSH-Server erforderlich.
SFTP kann mit einigen Remote-Dateimanagern, aber auch auf der Linux-, BSD- oder MacOS-Shell verwendet werden. Im Vergleich zu SCP müssen Sie hier jedoch die Verbindung zuerst aufbauen:
sftp <benutzername>@<IP_oder_Domain>
Sobald die Verbindung hergestellt ist, wird Ihnen die sftp
-Eingabeaufforderung präsentiert, über die Sie mit dem entfernten System interagieren können:
sftp holu@your_host.example.com
Connected to holu@your_host.example.com.
sftp>
Die nutzbaren SFTP-Befehle ähneln denen der Linux-Shell. Wenn Sie den Befehl help
oder ?
verwenden, wird eine Liste der verfügbaren Befehle angezeigt:
sftp> help
Available commands:
bye Quit sftp
cd path Change remote directory to 'path'
chgrp grp path Change group of file 'path' to 'grp'
chmod mode path Change permissions of file 'path' to 'mode'
chown own path Change owner of file 'path' to 'own'
df [-hi] [path] Display statistics for current directory or
filesystem containing 'path'
exit Quit sftp
get [-afPpRr] remote [local] Download file
reget [-fPpRr] remote [local] Resume download file
reput [-fPpRr] [local] remote Resume upload file
help Display this help text
lcd path Change local directory to 'path'
lls [ls-options [path]] Display local directory listing
lmkdir path Create local directory
ln [-s] oldpath newpath Link remote file (-s for symlink)
lpwd Print local working directory
ls [-1afhlnrSt] [path] Display remote directory listing
lumask umask Set local umask to 'umask'
mkdir path Create remote directory
progress Toggle display of progress meter
put [-afPpRr] local [remote] Upload file
pwd Display remote working directory
quit Quit sftp
rename oldpath newpath Rename remote file
rm path Delete remote file
rmdir path Remove remote directory
symlink oldpath newpath Symlink remote file
version Show SFTP version
!command Execute 'command' in local shell
! Escape to local shell
? Synonym for help
Für mehr Informationen und Beispiele, schauen Sie sich die SFTP-Dokumentation an.
Wie benutze ich SSH um einen Tunnel aufzubauen?
Die Tunneling-Funktion des SSH-Protokolls, welche für die Verschlüsselung eines Datenstroms (wie bei SCP und SFTP) verwendet wird, kann ebenfalls genutzt werden, um eine sichere VPN-ähnliche Verbindung zwischen zwei Systemen herzustellen. Weitere Informationen finden Sie in der SSH-Tunnel-Dokumentation.