Verwenden Sie den Befehl ssh-keygen, um ein öffentliches/privates Authentifizierungsschlüsselpaar zu generieren. Authentifizierungsschlüssel ermöglichen es einem Benutzer, eine Verbindung zu einem Remote-System herzustellen, ohne ein Kennwort anzugeben. Schlüssel müssen für jeden Benutzer separat generiert werden. Wenn Sie als Root-Benutzer Schlüsselpaare generieren, kann nur der Root die Schlüssel verwenden.
Das folgende Beispiel erstellt den öffentlichen und den privaten Teil eines RSA-Schlüssels:
# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:z6zTVQ/PJYt2o96DrVYClmfcqBG8Pdb8nzqY2m2HjeY root@geeklab The key's randomart image is: +---[RSA 2048]----+ | . | | o | | * = | | * O B .| | S. B + O.| | +. = = =| | .+ooB+.o| | ..oo=Bo+.| | .o.+*E=. | +----[SHA256]-----+
Verwenden Sie die Option –t, um den Typ des zu erstellenden Schlüssels anzugeben. Mögliche Werte sind „rsa1 “ für Protokollversion 1 und „dsa “, „ecdsa “ oder „rsa ” für Protokollversion 2.
Sie haben die Möglichkeit, eine Passphrase anzugeben, um den privaten Teil des Schlüssels zu verschlüsseln. Wenn Sie Ihren persönlichen Schlüssel verschlüsseln, müssen Sie die Passphrase jedes Mal angeben, wenn Sie den Schlüssel verwenden. Dadurch wird verhindert, dass ein Angreifer, der Zugriff auf Ihren privaten Schlüssel hat und sich als Sie ausgeben und auf alle Computer zugreifen kann, auf die Sie Zugriff haben, dies tun kann. Der Angreifer muss immer noch die Passphrase angeben.
Der Befehl ssh-key im Beispiel generierte zwei Schlüssel im Verzeichnis ~/.ssh:
$ ls ~/.ssh id_rsa id_rsa.pub
Um sich bei einem Remote-System anzumelden oder Dateien dorthin zu kopieren, ohne ein Kennwort anzugeben, kopieren Sie den öffentlichen Schlüssel (in diesem Beispiel ~/.ssh/id_rsa.pub) nach ~/.ssh/authorized_keys auf dem Remote-System. Stellen Sie die Fernbedienung ~/.ssh ein Verzeichnisberechtigungen auf 700 . Sie können dann die ssh- oder scp-Tools verwenden, um auf das Remote-System zuzugreifen, ohne ein Passwort anzugeben.
Um mehrere Verbindungen zuzulassen, hängen Sie den öffentlichen Schlüssel an die Datei „authorized_keys“ auf dem Remote-System an, anstatt ihn zu kopieren. Das folgende Beispiel hängt den öffentlichen Schlüssel an:
$ cat id_rsa.pub >> authorized_keys
Sie können die Systemsicherheit noch weiter verbessern, indem Sie die standardmäßige Kennwortauthentifizierung deaktivieren und die schlüsselbasierte Authentifizierung erzwingen. Setzen Sie dazu die Option PasswordAuthentication in /etc/ssh/sshd_config auf no Konfigurationsdatei wie folgt:
# vi /etc/ssh/sshd_config PasswordAuthentication no
Dadurch werden Benutzer, deren Schlüssel nicht in den authorized_keys enthalten sind, nicht zugelassen Datei des bestimmten Benutzers auf dem Server, um sich über ssh zu verbinden. Die Verbindung wird verweigert und die folgende Meldung erscheint:
$ ssh host01 Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
Wenn Sie die Option PasswordAuthentication auf yes setzen, was die Standardeinstellung ist, kann ein Benutzer ein Kennwort zur Authentifizierung verwenden.