scp
, oder "Secure Filte Transfer Program", sftp
) als Ersatz für das unverschlüsselte FTP übertragen werden.
ssh-keygen -b 4096Mit diesem Aufruf wird ein 4096 Bit langes Schlüsselpaar (Public-Key und Private-Key) erzeugt. SSH-Schlüssel sollten (Stand 04/2017) nicht länger als 4096 Bit gewählt werden, da manche SSH-Server keine längeren Schlüssel unterstützen. Der Output des Aufrufes sieht dann etwas so aus (Username im Beispiel: 'camphaus'):
Generating public/private rsa key pair. Enter file in which to save the key (/home/mi/camphaus/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/mi/camphaus/.ssh/id_rsa. Your public key has been saved in /home/mi/camphaus/.ssh/id_rsa.pub. ..Im Verlauf der Erzeugung wird man zuerst gefragt, wo der Schlüssel gespeichert werden soll (durch Betätigen von RETURN übernimmt man den vorgeschlagenen Pfad). Anschließend muss man eine sog. passphrase festlegen und zur Kontrolle noch ein zweites Mal eingeben. Das ist ein (möglichst langes/kompliziertes/nicht zu erratendes) Passwort, mit dem der Private-Key verschlüsselt und so vor unbefugter Verwendung durch Dritte geschützt wird. Diesen "Pass-Satz" muss man eingeben, wenn man auf den SSH-Private-Key zugreifen will, um sich z.B. per SSH einzuloggen. (Es sei denn, man nutzt
ssh-agent
, siehe weiter unten.)
Der Public-Key landet in unserem Beispiel, wenn man den Pfad nicht individuell ändert, in der Datei ~/.ssh/id_rsa.pub
, der Private-Key in der Datei ~/.ssh/id_rsa
Wichtig: Aus Sicherheitsgründen sind Private-Keys grundsätzlich mit einer Passphrase (einem langen Passwort/einem Passwort-"Satz", engl. phrase) zu verschlüsseln! Dadurch liegt der private Schlüssel nicht im Klartext vor, sondern ist selbst verschlüsselt. Das hat folgenden Vorteil: Sollte die Datei mit dem privaten Schlüssel einem Angreifer in die Hände fallen, muss der Angreifer, um sich mit dem Schlüssel auf einem Rechner einloggen zu können, noch die Passphrase des Schlüssels herausfinden. Bei einem Private-Key, der im Klartext vorliegt, könnte ein Angreifer dagegen mit diesem gestohlenen Schlüssel direkt auf andere Rechner zugreifen.
Fallstricke:authorized_keys
-Datei richtig gesetzt? (Die Datei darf für die Gruppe oder für Dritte nicht schreibbar sein!) Ggf. korrigieren mittels
chmod go-w ~/.ssh/authorized_keys
~/.ssh
richtig? - Das Verzeichnis darf keine Lese- oder Schreibberechtigung für 'group' und 'others' haben. Um dies gegebenenfalls zu korrigieren, den folgenden Befehl ausführen:chmod go-rwx ~/.ssh
Damit der SSH-Login mittels des Public-Key-Verfahrens (unter Benutzung des eigenen privaten Schlüssels) möglich ist, muss der zum Schlüsselpaar gehörende öffentlichen Schlüssel im eigenen Home-Verzeichnis im Unterordner ".ssh" in der Datei "authorized_keys" hinterlegt werden:
ssh-copy-id
zur Verfügung
ssh_known_hosts
haben, können Sie deren Prüfsummen mit denen unten im Anhang vergleichen.
ssh-copy-id -i camphaus@andorra.imp.fu-berlin.de /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys camphaus@andorra.imp.fu-berlin.de's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'andorra.imp.fu-berlin.de'" and check to make sure that only the key(s) you wanted were added.
ssh-copy-id
gibt): Händisches Übertragung des SSH-Public-Keys und Ablegen in der Datei der authorized_keys durch Absetzen des Kommandos (im nachstehenden Beispiel wieder Username 'camphaus' und Login-Server 'andorra' als Ziel/Server):cat ~/.ssh/*.pub | ssh camphaus@andorra.imp.fu-berlin.de 'umask 077; cat >> ~/.ssh/authorized_keys'
Beim Aufruf eines SSH-Logins will der Server, zu dem ich mich verbinden will, den Beweis, dass ich zu dem (oder einem der) dort in meiner "authorized_keys" hinterlegten Public-Key über den korrespondierenden Private-Key verfüge. Der lokale SSH-Client verlangt daher nach der Passphrase, um den lokal gespeicherten, mit der Passphrase verschlüsselten Private-Key benutzen zu können. "Passt" der Private-Key zum auf dem Server hinterlegten "authorized_key", gestattet der Server den Zugriff.
Beispiel-Aufruf: Login als Benutzer 'camphaus' von einem privaten Rechner aus auf dem Linux-Pool-Rechner 'peking':ssh camphaus@peking.imp.fu-berlin.de Enter passphrase for key '/home/mi/camphaus/.ssh/id_rsa': 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: Wed Apr 5 15:22:11 2017 from 160.45.113.58 camphaus@peking:~$
ssh
(Secure Shell) sowie scp
(Secure Copy als Ersatz für ftp zum Übertragen von Daten) sind in der Regel in jeder Linux-Distribution enthalten
ssh
(Secure Shell) sowie scp
(Secure Copy als Ersatz für ftp zum Übertragen von Daten) können Sie unter macOS durch das Dienstprogramm Terminal.app (/Programme/Dienstprogramme/Terminal.app) nutzen, das auf jedem Mac vorhanden ist.
ssh-keygen -p
Der Aufruf fragt nach der Datei, in der der Private-Key gespeichert ist, nach der alten und der stattdessen neu zu setzenden Passphrase, und ändert die Passphrase des betreffenden Schlüssels entsprechend.
ssh-agent
ssh-agent
starten. Dieser Agent fragt einmalig nach seinem Start die Passphrase ab und kann dann den privaten Schlüssel freigeben, wenn auf ihn für SSH-Logins zugegriffen werden soll. Einzelheiten siehe man ssh-agent
und man ssh-add
.