GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie passwortloses SSH unter Linux / UNIX funktioniert

SSH ist ein Protokoll zur sicheren Übertragung von Daten zwischen verschiedenen Rechnern. Das SSH-Protokoll verwendet Public-Key-Kryptographie, um dem Client zu ermöglichen, den Server zu authentifizieren, und um dem Server gegebenenfalls zu ermöglichen, den Client zu authentifizieren, ohne Passwörter hin und her zu senden.

Public-Key-Kryptografie verwendet ein Paar aus öffentlichen und privaten Schlüsseln. Der private Schlüssel wird geheim gehalten und niemals über das Netzwerk übertragen. Der öffentliche Schlüssel kann an alle Peers verteilt werden. Mit dem öffentlichen Schlüssel verschlüsselte Nachrichten können nur mit dem privaten Schlüssel entschlüsselt werden.

Zum Zeitpunkt der SSH-Verbindung erhält der Client den öffentlichen Schlüssel des Servers und überprüft, ob dieser mit dem gespeicherten öffentlichen Schlüssel in $HOME/.ssh/known_hosts übereinstimmt . Wenn dieser Test erfolgreich ist und der Server nicht über den öffentlichen Schlüssel des Clients verfügt, ist ein Kennwort erforderlich. Andernfalls sendet der Server eine Nachricht, die mit dem öffentlichen Schlüssel des Clients verschlüsselt ist, und wenn es dem Client gelingt, die Nachricht mit seinem privaten Schlüssel erfolgreich zu entschlüsseln, wird die Verbindung hergestellt.

Es gibt zwei Versionen des SSH-Protokolls, Version 1 und 2. Die Verschlüsselungen sind an die Protokollversion gebunden. Version 1 weist Sicherheitslücken auf, wann immer möglich, sollte Version 2 verwendet werden. Die meisten SSH-Server verwenden Version 2 des Protokolls aufgrund der Einschränkungen von Version 1.

Es gibt 2 Algorithmen zur Verschlüsselung von Public-Private-Key-Paaren, RSA und DSA .

Client-Setup

Protokoll Typ Befehlszeile
Version 1 RSA1 -t rsa1
Version 2 RSA -t rsa
Version 2 DSA -t dsa

Nachdem Sie bestimmt haben, welchen Identitätstyp Sie wollen/benötigen, besteht der erste Schritt darin, ein Paar aus öffentlichem und privatem Schlüssel zu generieren und den öffentlichen Teil an die entsprechende Stelle auf der Serverseite zu kopieren. Führen Sie im Home-Verzeichnis des Benutzers auf dem Client-Rechner Folgendes aus (Sie sollten das Verzeichnis $HOME/.ssh haben, falls Sie es nicht erstellen):

# ssh-keygen -t dsa -f ~/.ssh/id_dsa 
Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
SHA256:Qmd9iBOzx02n4DvDiBwRoGbGGC12X9i41QtbBxznHZc root@geeklab
The key's randomart image is:
+---[DSA 1024]----+
|..  ..*.=o+......|
|.=.o o * %o*.ooE |
|o.B . * X O.+.   |
| +   = * * o     |
|      + S =      |
|       .   o     |
|                 |
|                 |
|                 |
+----[SHA256]-----+

Hier
-t – wird für die Art der Verschlüsselung verwendet.
-f – wo die öffentlichen/privaten Schlüsselpaare gespeichert werden sollen. In diesem Fall das .ssh-Verzeichnis auf dem Home des Benutzers.

Nachdem Sie den obigen Befehl ausgeführt haben, wird nach einer Passphrase gefragt. Lassen Sie diesen Teil leer und drücken Sie einfach die Eingabetaste, wenn Sie diese Passphrase nicht bei jeder Verbindung eingeben möchten. Alternativ könnte man einen ssh-Agenten einrichten, der die Passphrasen handhabt.

Der obige Befehl erstellt zwei Dateien in ~/.ssh:

# ls -lrt ~/.ssh/id_dsa*
-rw-r--r--. 1 root root 602 Apr 12 14:45 /root/.ssh/id_dsa.pub
-rw-------. 1 root root 668 Apr 12 14:45 /root/.ssh/id_dsa

Server-Setup

Die Datei id_dsa.pub enthält den öffentlichen Schlüssel des Clients, der an die Datei $HOME/.ssh/authorized_keys angehängt werden muss auf dem Server:

1. Kopieren Sie die Datei id_dsa.pub auf den Server:

client$ scp ~/.ssh/id_dsa.pub user@server:~/.ssh/id_dsa.pub

Diesmal müssen Sie natürlich das Passwort für den Benutzer eingeben.

2. Melden Sie sich jetzt am Server-Rechner an und gehen Sie zum .ssh-Verzeichnis auf der Serverseite

client$ ssh user@server
server$ cd .ssh

3. Fügen Sie nun den öffentlichen Schlüssel des Clients zur Liste der bekannten öffentlichen Schlüssel auf dem Server hinzu:

server$ cat id_dsa.pub >> authorized_keys
server$ chmod 640 authorized_keys
server$ rm id_dsa.pub
server$ exit

das ist alles.

Testen

Um zu testen, ob passwortloses ssh funktioniert, verwenden Sie die folgende Syntax:

$ ssh -l [user] [server]
Last login: Tue Apr 12 15:20:07 2007 from 192.168.0.100

oder alternativ

$ ssh [user]@[server]
Last login: Tue Oct 12 15:20:07 2007 from 192.168.0.100

Wenn das System Sie nicht nach einem Passwort gefragt hat, funktioniert alles einwandfrei.

Warnung

Stellen Sie sicher, dass Sie Ihren privaten Schlüssel (~/.ssh/id_dsa) geheim halten! Während es sicher ist, Ihren öffentlichen Schlüssel (~/.ssh/id_dsa.pub) der Welt zu geben, sollten Sie äußerst vorsichtig sein, dass niemand sonst Ihren privaten Schlüssel (~/.ssh/id_dsa) lesen kann. Jeder, der Zugriff auf den privaten Schlüssel hat, kann sich an jedem Rechner anmelden, auf dem der passende öffentliche Schlüssel installiert ist.


Linux
  1. So ändern Sie den SSH-Port unter Linux

  2. So konfigurieren Sie die SSH-Schlüssel-basierte Authentifizierung in Linux

  3. So richten Sie SSH-Schlüssel ein

  4. So richten Sie Rsync mit SSH unter UNIX / Linux ein (rsync ohne Passwort)

  5. So richten Sie eine passwortlose SSH-Anmeldung unter Linux ein

So richten Sie den öffentlichen und privaten SSH-Schlüssel unter Linux ein

So richten Sie die passwortlose SSH-Anmeldung in AlmaLinux ein

So richten Sie SSH-Schlüssel unter Debian 11 Linux ein

So führen Sie SSH zum Server über Linux

Wie generiert und verwendet man einen SSH-Schlüssel in einem Linux-System?

So deaktivieren Sie die Überprüfung des SSH-Hostschlüssels in Linux