Implementieren Sie die SSH-Schlüssel-basierte Authentifizierung unter Linux
SSH (Secured Shell) ist ein Protokoll, das eine kryptografisch gesicherte Verbindung zwischen dem SSH-Client und Remote-Servern herstellt.
Mit SSH können Sie Remote-Server sicher verwalten und verwalten. Dies kann in vielerlei Hinsicht hilfreich sein.
- Bereitstellung auf mehreren Servern
- Stoppen / Starten von Diensten aus der Ferne
- Automation
und all deine Kreativität (hoffentlich) ...
Als Systemadministrator ist dies ein grundlegendes Wissen.
Lassen Sie uns lernen, wie ...
Ich werde einen privaten und einen öffentlichen Schlüssel generieren. Der private Schlüssel sollte auf Ihrem SSH-Client-Computer gespeichert und gesichert sein. Der öffentliche Schlüssel muss auf den Remote-Server kopiert werden, um sich vom SSH-Client-Computer ohne Kennwort bei diesem Server anzumelden.
Sie werden Folgendes lernen.
- Installieren Sie SSH (nicht erforderlich, wenn bereits installiert)
- Generieren Sie SSH-Schlüssel
- Kopieren Sie den SSH-Schlüssel auf einen Remote-Server
- Melden Sie sich mit SSH beim Remote-Server an
Zu Demonstrationszwecken habe ich 2 Server mit den folgenden IP-Adressen, ein System ist ein Client und der andere ist ein Server, auf dem ich mich über ssh von einem Client-Computer aus anmelden werde.
- Client (Benutzer -> Geekflare): 192.168.56.102
- Remote (Benutzer -> Ubuntu): 192.168.56.101
Installing SSH
Stellen Sie sicher, bevor Sie die in diesem Artikel genannten Schritte ausführen openssh-server
ist auf den Servern installiert. Wenn es nicht installiert ist, führen Sie die folgenden Befehle aus, um es zu installieren.
sudo apt-get install openssh-server
sudo systemctl enable ssh
sudo systemctl start ssh
Sie können den Befehl ssh ausführen, um zu überprüfen, ob er auf dem System installiert ist oder nicht.
geekflare@geekflare:~$ ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
[-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
[-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
[-i identity_file] [-J [user@]host[:port]] [-L address]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-Q query_option] [-R address] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] destination [command]
Generate SSH Keys
Dies muss auf einem Client-Server erfolgen.
Führen Sie die ssh-keygen
Befehl zum Generieren eines SSH-Schlüssels. Drücken Sie einfach die Eingabetaste, wenn Sie nach der Datei, der Passphrase und der gleichen Passphrase gefragt werden. Standardmäßig werden zwei Schlüssel im Verzeichnis ~ / .ssh generiert. Id_rsa ist der private Schlüssel und id_rsa.pub ist der zugeordnete öffentliche Schlüssel.
geekflare@geekflare:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/geekflare/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/geekflare/.ssh/id_rsa.
Your public key has been saved in /home/geekflare/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:3XDm62tzJegGm8oAmFYCyeFZovJOuU42zNgyn9GzH30 geekflare@geekflare
The key's randomart image is:
+---[RSA 2048]----+
|o+.. |
|+o+ |
|oo. . . o |
|.. * . * |
| B . S . o. |
| O o . . . ... .|
|+ @ o o . E=. o |
| B + o + .o.= . |
| + ... o. oo+ |
+----[SHA256]-----+
Es werden zwei neue Dateien in generiert ~/.ssh
Verzeichnis.
Copy SSH Key to Remote Server
Der private Schlüssel sollte kopiert werden ~/.ssh
Ordner auf einem Remote-Server. Die meisten Server sollten diesen Ordner bereits haben. Wenn nicht, müssen Sie einen Ordner erstellen.
Und dazu:
- Melden Sie sich beim Remote-Server mit dem Benutzer an, mit dem Sie eine Verbindung herstellen möchten. In meinem Fall ist es
ubuntu
- Stellen Sie sicher, dass das aktuelle Arbeitsverzeichnis das Basisverzeichnis des Benutzers ist, und erstellen Sie dann einen .ssh-Ordner. Sie können auch den folgenden Einzelbefehl verwenden, um einen zu erstellen
mkdir -p ~/.ssh
Wenn Sie bereits einen .ssh-Ordner haben, erstellen Sie eine Sicherungskopie davon.
Als nächstes drücken wir den öffentlichen Schlüssel von einem Client-Server.
Führen Sie auf dem Clientcomputer (192.168.56.102) den folgenden Befehl aus, um den öffentlichen Schlüssel auf dem Remote-Server innerhalb eines zu kopieren authorized_keys
Datei im SSH-Verzeichnis.
geekflare@geekflare:~$ cat .ssh/id_rsa.pub | ssh ubuntu@192.168.56.101 'cat >> .ssh/authorized_keys'
ubuntu@192.168.56.101's password:
Führen Sie den folgenden Befehl aus, um Berechtigungen für die Datei authorized_keys auf dem Remote-Server festzulegen.
geekflare@geekflare:~$ ssh ubuntu@192.168.56.101 "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"
Großartig, dies kommt zu dem Schluss, dass der Schlüssel ausgetauscht und die Berechtigung festgelegt wurde.
Login to Remote Server using SSH
Lassen Sie uns testen, ob es funktioniert!
Melden Sie sich von einem Client-Computer (192.168.56.101) als Geekflare-Benutzer beim Remote-Server (192.168.56.102) an.
Führen Sie den folgenden Befehl zum Testen aus. Diesmal wird kein Kennwort abgefragt.
geekflare@geekflare:~$ ssh ubuntu@192.168.56.101
Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-151-generic i686)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
346 packages can be updated.
11 updates are security updates.
Last login: Mon Jun 17 00:10:32 2019 from 192.168.56.101
Bitte schön…
Ich habe mich erfolgreich beim Remote-Server angemeldet. Wenn Sie den folgenden Befehl ausführen, werden die IP-Details des Remote-Computers angezeigt.
ubuntu@ubuntu:~$ ifconfig
enp0s3 Link encap:Ethernet HWaddr 08:00:27:9b:47:86
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::5c62:3267:b752:fe5d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:20239 errors:0 dropped:0 overruns:0 frame:0
TX packets:5406 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:22678039 (22.6 MB) TX bytes:701710 (701.7 KB)
enp0s8 Link encap:Ethernet HWaddr 08:00:27:a9:4a:6b
inet addr:192.168.56.101 Bcast:192.168.56.255 Mask:255.255.255.0
inet6 addr: fe80::54a9:761c:9034:21a2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:330 errors:0 dropped:0 overruns:0 frame:0
TX packets:197 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:42847 (42.8 KB) TX bytes:32774 (32.7 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:997 errors:0 dropped:0 overruns:0 frame:0
TX packets:997 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:79654 (79.6 KB) TX bytes:79654 (79.6 KB)
Conclusion
Das Einrichten des SSH-Schlüsselaustauschs ist sehr einfach, wie Sie sehen können. Ich hoffe, dies hilft Ihnen und ist daran interessiert, die Linux-Administration und die Fehlerbehebung zu erlernen Udemy natürlich.