Authentifizierung auf Netzwerkgeräten über SSH mit öffentlichen Schlüsseln

Schlüsselbund

Standardmäßig stellen Ingenieure mithilfe eines Benutzernamens und eines Kennworts eine Verbindung zu Netzwerkgeräten her. Mit Telnet werden Benutzeranmeldeinformationen im Klartext und über SSH verschlüsselt übertragen. Um den geheimen Teil nicht über das Netzwerk zu übertragen, wird die Authentifizierung mit öffentlichem Schlüssel verwendet. Bei dieser Authentifizierung wird dem Benutzer auf dem Gerät der öffentliche Schlüssel des Benutzers vorab zugewiesen. Der private Schlüssel wird nicht über das Netzwerk übertragen.

Dieses Handbuch hilft Ihnen dabei, schnell öffentliche Schlüssel für die Authentifizierung zu verwenden, wenn Sie über das SSH-Protokoll eine Verbindung zu Netzwerkgeräten herstellen. Das Handbuch gilt sowohl für Windows als auch für Mac OS X. Ich habe versucht, es so einfach und informativ wie möglich zu gestalten. Es ist nicht überladen, sondern beantwortet die grundlegenden Fragen:





Ich habe auch die "wunden" Themen untersucht:

  • Schlüsselkonvertierung zwischen OpenSSH <==> SecureCRT <==> PuTTY.
  • Verwenden verschiedener Paare öffentlicher Schlüssel für verschiedene Geräte. Ein Schlüssel ist gut, aber in der Realität nicht anwendbar. Unterschiedliche Kunden oder Geräte erfordern unterschiedliche Paare öffentlicher Schlüssel (einige mit Passwort, andere ohne).
  • Verwenden des nativen (nativen) MAC OS X zum Arbeiten mit öffentlichen Schlüsseln.
  • Das Handbuch sollte auch bei der Verwendung von Ansible mit Netzwerkgeräten hilfreich sein, da Ansible standardmäßig OpenSSH mit Authentifizierung mit öffentlichem Schlüssel verwendet.

90% des vorgestellten Materials wird an realen Geräten getestet.


Einführung


Neben der Standardkennwortauthentifizierung (Kennwort / Tastatur) im SSH-Protokoll gibt es auch die Public-Key-Authentifizierung (RSA).

Als Referenz
RSA (https://ru.wikipedia.org/wiki/RSA) — . (public key) (private key). : . . , , .

Die Authentifizierung mit RSA-Schlüsseln besteht aus mehreren Schritten:


Warum nur RSA? Warum nicht eine DSA? Leider habe ich die Antwort auf diese Frage nicht gefunden (und nicht wirklich danach gesucht). Offiziell wird jedoch nur RSA auf Cisco-Geräten unterstützt.

Secure Shell-Konfigurationshandbuch, Cisco IOS Release 15E:

Secure Shell-Konfigurationshandbuch, Cisco IOS Release 15E
Einschränkungen für Secure Shell Version 2 Unterstützung Die
Generierung von Rivest-, Shamir- und Adleman-Schlüsseln (RSA) ist eine serverseitige SSH-Anforderung. Geräte, die als SSH-Clients fungieren, müssen keine RSA-Schlüssel generieren.

Versuch, DSA-Schlüsseldaten einzugeben:

CSR-1(conf-ssh-pubkey-data)#exit
%SSH: Only ssh-rsa type is supported
CSR-1(conf-ssh-pubkey-user)#


Erstellen eines öffentlichen RSA-Schlüssels


Ein Paar RSA-Schlüssel kann mit verschiedenen Dienstprogrammen erstellt werden: SecureCRT, PuTTYgen oder einer anderen Software. Beim Erstellen eines Schlüssels können Sie die Passphrase (Passwortschutz mit einem Schlüssel) festlegen.


RSA-Paargenerierung in SecureCRT


SecureCRT -> Tools -> Öffentlichen Schlüssel erstellen ...:


Ein bisschen Theorie → die Schaltfläche „Weiter>“:


Typ des RSA / DSA-Zertifikats → Wählen Sie RSA → Schaltfläche „Weiter>“:


Verschlüsselungskennwort für den geheimen Schlüssel (optional, Sie können ihn leer lassen und nicht verschlüsseln) + Kommentar → Schaltfläche „Weiter>“:


Wählen Sie die Schlüssellänge (in SecureCRT Version 6.1.0 beträgt die maximale Schlüssellänge 2048 Bit, in Version 8.5.4 - 16 384 Bit):


Tastengenerierung → Schaltfläche „Weiter>“:

Um Zufallszahlen zu generieren, müssen Sie die Maus innerhalb des Fensters bewegen.



Speichern eines Schlüsselpaars → Auswählen eines Speicherorts → Auswählen eines Formats für einen gespeicherten Schlüssel (VanDuke Private-Format, OpenSSH-Legacy, OpenSSH neu) → Schaltfläche „Fertig stellen“:



SecureCRT fragt, ob dieser Schlüssel zum Standardschlüssel für SecureCRT gemacht werden soll:



RSA-Paargenerierung in PuTTYgen


Sie können PuTTYgen hier herunterladen: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html .

Starten Sie PuTTYgen:


Wählen Sie die Parameter aus (Paartyp: RSA; Schlüsselbitdimension: 2048; optional Passphrase einstellen (Passwortschutz mit Passwort)) → Generieren:


Um Zufallszahlen zu garantieren, bittet er, die Maus innerhalb des Fensters zu bewegen. Dies ist ein Schutz gegen Pseudozufallszahlen.


RSA-Schlüssel speichern → Schaltfläche „Privaten Schlüssel speichern“:


Bitte beachten Sie: RSA-Schlüssel, die in einer Software in einem privaten Format gespeichert sind, können nicht in Software eines anderen Herstellers verwendet werden. Das heißt, ein Paar RSA-Schlüssel, die in PuTTYgen erstellt und im Putty Private Key-Format gespeichert wurden, sind nicht für die Verwendung in SecureCRT geeignet und umgekehrt. PuTTY unterstützt nur das Putty Private Key-Format. Eine universelle Lösung für die Verteilung von Schlüsseln besteht darin, Schlüssel in das OpenSSH-Format zu konvertieren (siehe Link 2: „Konvertierung von Putty zu SecureCRT mit Authentifizierungsschlüsseln“). Da SecureCRT frei mit dem OpenSSH-Format arbeitet. Und die PuTTYgen-Software konvertiert das OpenSSH-Format in das Putty Private Key-Format.


Konvertieren eines RSA-Schlüssels vom Putty Private Key (PuTTY) -Format in das OpenSSH (SecureCRT) -Format


Um RSA-Schlüssel in SecureCRT zu verwenden, die in PuTTYgen generiert und im Putty Private Key-Format (* .ppk) gespeichert werden, exportieren wir sie mit PuTTYgen im OpenSSH-Format:

  1. Starten Sie PuTTYgen.
  2. Wir laden den vorhandenen RSA-Schlüssel im Putty Private Key-Format (* .ppk) → Die Schaltfläche „Laden“.
  3. Speichern Sie die Datei mit dem öffentlichen Schlüssel → „Öffentlichen Schlüssel speichern“.
  4. Wir exportieren den geheimen Schlüssel in das OpenSSH-Format: Menü PuTTYgen → „Konvertierungen“ → „OpenSSH-Schlüssel exportieren“.
  5. Wir verwenden OpenSSH-Dateien in SecureCRT. Die Datei mit dem öffentlichen Schlüssel hat die Erweiterung .pub, die Datei mit dem privaten Schlüssel hat keine Erweiterung.


Konvertieren eines RSA-Schlüssels vom SecureCRT-Format (VanDyke Private Key) in das PuTTY-Format (Putty Private Key)


Um RSA-Schlüssel in PuTTY zu verwenden, die in SecureCRT generiert und im VanDyke Private Key-Format (öffentliche Schlüsseldatei * .pub, geheime Schlüsseldatei *. (Ohne Erweiterung)) gespeichert wurden, exportieren Sie sie mit SecureCRT im OpenSSH-Format und anschließend Mit PuTTYgen exportieren wir in das Format Putty Private Key (* .ppk):

  1. Starten Sie SecureCRT.
  2. Menü “Extras” → “Privaten Schlüssel in OpenSSH-Format konvertieren ...”
  3. Wählen Sie die Quelldatei mit den VanDyke Private Key-Schlüsseln aus.
  4. Wir speichern OpenSSH-Schlüssel unter einem neuen Namen.
  5. Starten Sie PuTTYgen.
  6. Wir laden den vorhandenen RSA-Schlüssel im OpenSSH-Format (*.): PuTTYgen-Menü → „Konvertierungen“ → „Schlüssel importieren“.
  7. Speichern Sie die Datei im Kittformat: "Privaten Schlüssel speichern".


Generieren öffentlicher Schlüssel unter MAC OS X unter Verwendung des Betriebssystems


Wir werden das eingebaute Dienstprogramm ssh-keygen (man ssh-keygen) verwenden.
Wir generieren einen RSA-Schlüssel mit einer Länge von 2048 Bit mit dem Schlüsselnamen, dem Pfad zum Ordner mit dem Schlüsselspeicherort:

ssh-keygen -b 2048 -t rsa -c "Lab router R4" -f /Users/ArtemiySP/Documents/python/r4

Zur Laufzeit fordert das Programm ein Kennwort zum Schutz des RSA-Schlüssels an:

artemiy-2:Downloads ArtemiySP$ ssh-keygen -b 2048 -t rsa -C "Lab router R4" -f /Users/ArtemiySP/Documents/python/r4
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/ArtemiySP/Documents/python/r4.
Your public key has been saved in /Users/ArtemiySP/Documents/python/r4.pub.
The key fingerprint is:
SHA256:WdT47SFvgGI7danxX94p8/cO3uyU12SB3ipkc7nHxzA Lab router R4
The key's randomart image is:
+---[RSA 2048]----+
|          .o     |
|         .. . .  |
|          .o + . |
|        oo+ B = .|
|       .S+ O OEoo|
|        o + + B*+|
|         . . =.*O|
|            .+o**|
|              =+O|
+----[SHA256]-----+
artemiy-2:Downloads ArtemiySP$

Wir generieren einen RSA-Schlüssel mit einer Länge von 4096 Bit unter Angabe des Schlüsselnamens, des Pfads zum Ordner mit dem Schlüsselspeicherort. Wir setzen das Kennwort explizit in den Schlüsselgenerierungsparametern (-N "cisco"):

artemiy-2:Downloads ArtemiySP$ ssh-keygen -b 4096 -t rsa -C "Lab router R5" -N "cisco" -f /Users/ArtemiySP/Documents/python/r5
Generating public/private rsa key pair.
Your identification has been saved in /Users/ArtemiySP/Documents/python/r5.
Your public key has been saved in /Users/ArtemiySP/Documents/python/r5.pub.
The key fingerprint is:
SHA256:NraLRMqB4qmA8qNjKdpBBt1JBw8Osf/3GfuB2k1R+zY Lab router R5
The key's randomart image is:
+---[RSA 4096]----+
|  o.+..          |
| . * =           |
|. o + .       .  |
| . o         . . |
|. + o . S   . .  |
|o+.. = o o . . . |
|+oo o o o o o  Eo|
|*=.. . o = * . ..|
|Boo.  . o =.o    |
+----[SHA256]-----+
artemiy-2:Downloads ArtemiySP$

Nicht generierte Schlüsselgenerierungsparameter: Ein unzuverlässiger Schlüssel mit einer Länge von 1024 Bit, der den Schlüsselnamen und den Pfad zum Ordner mit dem Schlüsselspeicherort angibt. Das Kennwort wird explizit in den Schlüsselgenerierungsparametern festgelegt (-N "" - ohne Kennwort):

artemiy-2:Downloads ArtemiySP$ ssh-keygen -b 1024 -t rsa -C "Lab router R6" -N "" -f /Users/ArtemiySP/Documents/python/r6
Generating public/private rsa key pair.
Your identification has been saved in /Users/ArtemiySP/Documents/python/r6.
Your public key has been saved in /Users/ArtemiySP/Documents/python/r6.pub.
The key fingerprint is:
SHA256:LEcfgN+58TYMDv4MpBA2FGCWc2aFiY+SxWBf7pRViWs Lab router R6
The key's randomart image is:
+---[RSA 1024]----+
|.++=o*.o+..      |
|.oB % +. o       |
| o X * .o...     |
|o . =  E+.=.     |
| .   oo+So.*     |
|      .oo o =    |
|         + . .   |
|          o      |
|                 |
+----[SHA256]-----+
artemiy-2:Downloads ArtemiySP$

Daher haben wir drei Schlüssel mit den Namen der Schlüssel und der Position der Schlüssel erstellt (standardmäßig werden alle Schlüssel in / Users / [Benutzername 022 / .ssh gespeichert).

Standardmäßig werden bei einer Verbindung über SSH mit Authentifizierung durch einen öffentlichen Schlüssel alle öffentlichen Schlüssel nacheinander gespeichert, die im Ordner /Users/[Username†/.ssh gespeichert werden.

R6-Schlüssel: Benennen Sie den Schlüssel in "id_rsa" um (standardmäßig lautet der Name der generierten Schlüsseldatei "id_rsa") und übertragen Sie ihn mit SSH-Schlüsseln (~ / .ssh /) in den Ordner (d. H. Wir führen alle Schritte aus, sodass der R6-Schlüssel als Hauptschlüssel verwendet wird Standard-SSH-Verbindungsschlüssel):

Konvertieren Sie den öffentlichen OpenSSH-Schlüssel in das RFC4716-Format (Export nach Cisco IOS):

https://serverfault.com/questions/706336/how-to-get-a-pem-file-from-ssh-key-pair
ssh-keygen -f ~/Documents/python/r4.pub -e -m RFC4716
ssh-keygen -f ~/Documents/python/r5.pub -e -m RFC4716
ssh-keygen -f ~/.ssh/id_rsa.pub -e -m RFC4716


Verwenden eines öffentlichen Schlüssels für Geräte


Wie kann man auf verschiedenen Geräten einen öffentlichen Schlüssel an einen Benutzer binden?

Das Binden eines öffentlichen Schlüssels an einen Benutzer ist kein Standard und variiert von Gerät zu Gerät. Daher werden Beispiele für jeden Gerätetyp angegeben, der im Netzwerk am häufigsten verwendet wird.


Cisco IOS XE, Catalyst (ab Version 15.1), IOS


  1. Auf dem Gerät befindet sich bereits ein Benutzer.
  2. Geben Sie in den SSH-Einstellungen (ip ssh pubkey-chain) für den Benutzer (Benutzername cisco) den öffentlichen Schlüssel (Schlüsselzeichenfolge) an:
    CSR-1#conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    CSR-1(config)#ip ssh pubkey-chain 
    CSR-1(conf-ssh-pubkey)#username ssh-putty
    CSR-1(conf-ssh-pubkey-user)#key-string 
    CSR-1(conf-ssh-pubkey-data)#$QAAAQEAnPbynT1+2rjlyqP4viSPdTVDFLSHzWjJnAwy     
    CSR-1(conf-ssh-pubkey-data)#$NCfaqvMTPruCgG5096q8lO0ntURmNgmfMEQPOgb8weF     
    CSR-1(conf-ssh-pubkey-data)#$AtMQYk7WFM+5iBnOQ32UAHNavCUA7YFEpAdOQO4W/qB     
    CSR-1(conf-ssh-pubkey-data)#$SlOLy+PQ47jDUINBnuUeHd8ZXyzXxWglzSvqtwMEXBW     
    CSR-1(conf-ssh-pubkey-data)#$VoUTBYbJ45DmFa93P50qf494ujaAsTbYyJ/GBzJUTK/     
    CSR-1(conf-ssh-pubkey-data)#$UADAkNGxQARfOfHZWiIYb3rif6h6hfwwVUZS/Tw==       
    CSR-1(conf-ssh-pubkey-data)#exit
    CSR-1(conf-ssh-pubkey-user)#exit
    CSR-1(conf-ssh-pubkey)#exit
    CSR-1(config)#exit
    CSR-1#exit
    
    CSR-1#show running-config | inc ssh
    username ssh-public-key secret 5 $1$ebjc$EYgwMFQXPPiywFVn6rl7t.
    username ssh-putty privilege 15 secret 5 $1$vIhh$nM8iCeBKmLyVK4hA6./h4.
    ip ssh pubkey-chain
       key-hash ssh-rsa D4E9AD62F7F6265EAAB3FB8778477612
      username ssh-public-key
       key-hash ssh-rsa C331DEE821A84681A4A7B1862C100D16
      username ssh-putty
       key-hash ssh-rsa F32BEB60290EA75D151447C0D42D2A99
       key-hash ssh-rsa 5432C275B363B646E02D3BA7E8D865B7
    CSR-1#
    


Cisco ASA


LAB-ASA5516-X-01/pri/act# conf t
LAB-ASA5516-X-01/pri/act(config)# username artemiy password artemiy privilege $
LAB-ASA5516-X-01/pri/act(config)# username artemiy attributes 
LAB-ASA5516-X-01/pri/act(config-username)# ssh authentication publickey ?

username mode commands/options:
  WORD  Raw SSH-RSA public key
LAB-ASA5516-X-01/pri/act(config-username)# ssh authentication publickey AAAAB3$

Wir fügen den gesamten Schlüssel in einer Zeile ein (OpenSSH-Format).


Huawei Router und Switches


[R1]rsa peer-public-key test-key1 encoding-type pem 
Enter "RSA public key" view, return system view with "peer-public-key end".
NOTE: The number of the bits of public key must be between 769 and 2048.
[R1-rsa-public-key]public-key-code begin 
Enter "RSA key code" view, return last view with "public-key-code end".
[R1-rsa-key-code]---- BEGIN SSH2 PUBLIC KEY ----
[R1-rsa-key-code]Subject: Subject
[R1-rsa-key-code]Comment: " Subject@Subject.local"
[R1-rsa-key-code]ModBitSize: 2048
[R1-rsa-key-code]AAAAB3NzaC1yc2EAAAADAQABAAABAQC4YLFhPqfsz4a6PUpZOtvm6zGn5TWOVMnx
[R1-rsa-key-code]lTH5hr/u+aYnoM2XnDTu4Ul1iB8MMPLVKXzV4LgYhaFcU1rz2/yYhTKIwbiQTHof
[R1-rsa-key-code]63fJjyWwkvyBuVZTSKh4b2pfoF2mXgdJzzRmUaiRrZZUVJWsX+CbgtKQuktG7sTK
[R1-rsa-key-code]2eguHwdfhilbOAsUaL0/q39Y0aTAMnLMtn0m5r6MD/UopQPI3Fxm1L9azJ7zYIZa
[R1-rsa-key-code]yI43Solg0AOupPl8FHFI9Cxq81/uZRACx5lAyuObaQ4/t1Rdh3CAJj1qwfZjZFTP
[R1-rsa-key-code]VdJxwTDxwfkpOzMD193M0ThOSrgfWe336Q9F3jbSWrEYUQDX8ew7
[R1-rsa-key-code]---- END SSH2 PUBLIC KEY ----
[R1-rsa-key-code]public-key-code end
[R1-rsa-public-key]peer-public-key end 
[R1]display rsa peer-public-key 

=====================================
    Key name: test-key1
=====================================
Key Code:
---- BEGIN SSH2 PUBLIC KEY ----
AAAAB3NzaC1yc2EAAAADAQABAAABAQC4YLFhPqfsz4a6PUpZOtvm6zGn5TWOVMnx
lTH5hr/u+aYnoM2XnDTu4Ul1iB8MMPLVKXzV4LgYhaFcU1rz2/yYhTKIwbiQTHof
63fJjyWwkvyBuVZTSKh4b2pfoF2mXgdJzzRmUaiRrZZUVJWsX+CbgtKQuktG7sTK
2eguHwdfhilbOAsUaL0/q39Y0aTAMnLMtn0m5r6MD/UopQPI3Fxm1L9azJ7zYIZa
yI43Solg0AOupPl8FHFI9Cxq81/uZRACx5lAyuObaQ4/t1Rdh3CAJj1qwfZjZFTP
VdJxwTDxwfkpOzMD193M0ThOSrgfWe336Q9F3jbSWrEYUQDX8ew7
---- END SSH2 PUBLIC KEY ----
aaa
local-user jet privilege level 15
 local-user jet service-type telnet terminal ssh http
ssh user jet assign rsa-key test-key1

In Huawei importierte Arten von Schlüsselformaten:

"SecureCRT und PuTTY generieren RSA-Schlüssel im PEM-Format."

rsa peer-public-key test-key1 encoding-type pem

"Der OpenSSH generiert RSA-Schlüssel im OpenSSH-Format."

rsa peer-public-key test-key1 encoding-type openssh

"Die OpenSSL generiert RSA-Schlüssel im DER-Format."

rsa peer-public-key test-key1 encoding-type der

Der Standardwert ist hexadezimal:

rsa peer-public-key test-key1

Hinweis: Huawei-Geräte unterstützen nicht nur Schlüssel im RSA-Format, sondern auch andere Formate:

ssh user user-name assign { rsa-key | dsa-key | ecc-key } key-name

Sie können den Authentifizierungstyp für den Benutzer über SSH fest festlegen:

[R1]ssh user jet authentication-type ?
  all           All authentication, password,RSA or ECC
  ecc           ECC authentication
  password      Password authentication
  password-ecc  Both password and ECC
  password-rsa  Both password and RSA
  rsa           RSA authentication
[R1]

Das heißt, wir erlauben den Zugriff entweder mit einem Passwort oder mit öffentlichen und privaten Schlüsseln oder mit beiden.


Huawei USG (6000)


Die Konfiguration ist den Einstellungen auf dem Router völlig ähnlich, verfügt jedoch über einige Funktionen.

Standardmäßig ist die Berechtigungsstufe nach der Protokollierung mit Zertifikaten 0 und kann nicht erhöht werden. Daher wird die Prioritätsstufe mit festgelegt

user-interface vty 0 4 
user privilege level 15
user-interface vty 16 20:
user privilege level 15

Beispiel:

[USG-a]rsa peer-public-key test-key1 encoding-type pem 
Enter "RSA public key" view, return system view with "peer-public-key end".
[USG-a-rsa-public-key]public-key-code begin
Enter "RSA key code" view, return last view with "public-key-code end".
[USG-a-rsa-key-code]---- BEGIN SSH2 PUBLIC KEY ----
[USG-a-rsa-key-code]Subject: subject
[USG-a-rsa-key-code]Comment: " subject@subject.local"
[USG-a-rsa-key-code]ModBitSize: 2048
[USG-a-rsa-key-code]AAAAB3NzaC1yc2EAAAADAQABAAABAQC4YLFhPqfsz4a6PUpZOtvm6zGn5TWOVMnx
[USG-a-rsa-key-code]lTH5hr/u+aYnoM2XnDTu4Ul1iB8MMPLVKXzV4LgYhaFcU1rz2/yYhTKIwbiQTHof
[USG-a-rsa-key-code]63fJjyWwkvyBuVZTSKh4b2pfoF2mXgdJzzRmUaiRrZZUVJWsX+CbgtKQuktG7sTK
[USG-a-rsa-key-code]2eguHwdfhilbOAsUaL0/q39Y0aTAMnLMtn0m5r6MD/UopQPI3Fxm1L9azJ7zYIZa
[USG-a-rsa-key-code]yI43Solg0AOupPl8FHFI9Cxq81/uZRACx5lAyuObaQ4/t1Rdh3CAJj1qwfZjZFTP
[USG-a-rsa-key-code]VdJxwTDxwfkpOzMD193M0ThOSrgfWe336Q9F3jbSWrEYUQDX8ew7
[USG-a-rsa-key-code]---- END SSH2 PUBLIC KEY ----
[USG-a-rsa-key-code]public-key-code end
[USG-a-rsa-public-key]peer-public-key end
[USG-a]
[USG-a]ssh user admin assign rsa-key test-key1
! Out-of-band management interface:
[USG-a-GigabitEthernet0/0/0]service-manage ssh permit
! Grant user level 15 privillege:
[USG-a]user-interface vty 0 4
[USG-a-ui-vty0-4]user privilege level 15


Cisco Nexus 9.3


Option 1: Installieren Sie die öffentliche Schlüsseldatei auf dem Gerät vor und hängen Sie die öffentliche Schlüsseldatei an den Benutzer an.

  • Kopieren Sie die Datei mit dem öffentlichen Schlüssel auf das Gerät.
  • Wir weisen den Benutzer an, die öffentliche Schlüsseldatei zu verwenden.

switch# copy tftp://10.10.1.1/secsh_file.pub bootflash:secsh_file.pub
username User1 sshkey file bootflash:secsh_file.pub

Option 2: Kopieren Sie den öffentlichen Schlüssel auf den Benutzer:

username User1 sshkey
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4YLFhPqfsz4a6PUpZOtvm6zGn5TWOVMnxlTH5hr/u+aYnoM2XnDTu4Ul1iB8MMPLVKXzV4LgYhaFcU1rz2/yYhTKIwbiQTHof63fJjyWwkvyBuVZTSKh4b2pfoF2mXgdJzzRmUaiRrZZUVJWsX+CbgtKQuktG7sTK2eguHwdfhilbOAsUaL0/q39Y0aTAMnLMtn0m5r6MD/UopQPI3Fxm1L9azJ7zYIZayI43Solg0AOupPl8FHFI9Cxq81/uZRACx5lAyuObaQ4/t1Rdh3CAJj1qwfZjZFTPVdJxwTDxwfkpOzMD193M0ThOSrgfWe336Q9F3jbSWrEYUQDX8ew7


Verwenden eines geheimen Schlüssels für die SSH-Verbindung


Dieser Abschnitt befasst sich mit der Konfiguration von SSH-Clients für die Authentifizierung mithilfe von RSA-Schlüsseln auf Netzwerkgeräten (oder anderen Geräten, sofern die Hardware und Software die Authentifizierung mit öffentlichen Schlüsseln unterstützt).

Wir werden erwägen, die Verwendung des öffentlichen Schlüssels in den beliebtesten Programmen einzurichten: SecureCRT und PuTTY.


SecureCRT


Im Fenster mit den SSH-Einstellungen befindet sich eine Authentifizierungsliste. Darin müssen Sie die Priorität von PublicKey auf den höchsten Wert erhöhen - machen Sie es ganz oben in der Liste.



Gehen Sie dann zu den PublicKey-Optionen und wählen Sie die private Schlüsseldatei aus. Mit dem obersten Schalter können Sie die globalen Einstellungen des geheimen Schlüssels oder der Sitzungseinstellungen - einen anderen geheimen Schlüssel (nicht Standardschlüssel) - nur für diese Verbindung verwenden.



Konfigurieren Sie den globalen öffentlichen Schlüssel: im Menü Optionen → Globale Optionen → Kategorie SSH2.



Kitt


Geben Sie in den SSH-Einstellungen (Verbindung → SSH → Authentifizierung) im Feld „Private Schlüsseldatei zur Authentifizierung“ die Datei Putty Private Key (* .ppk) an:



MAC OS X


Einrichten eines Standardclients für die Verwendung öffentlicher Schlüssel:

  • Verbindung mit einem nicht standardmäßigen Schlüssel, der manuell angegeben wird:

    artemiy-2:~ ArtemiySP$ ssh r4@10.31.73.29 -i ~/Documents/python/r4
    The authenticity of host '10.31.73.29 (10.31.73.29)' can't be established.
    RSA key fingerprint is SHA256:fxOLFKU6YGyIqisrIh2P0O52Rr6Wx/wsSAcHsTz8fo0.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '10.31.73.29' (RSA) to the list of known hosts.
    CSR-4#
    
  • Verbindung mit einem nicht standardmäßigen Schlüssel, der manuell angegeben wird:

    artemiy-2:~ ArtemiySP$ ssh r5@10.31.73.30 -i ~/Documents/python/r5
    The authenticity of host '10.31.73.30 (10.31.73.30)' can't be established.
    RSA key fingerprint is SHA256:4l67C4Il4pTaqYT4vrtWr0aY7rPmNWKsjRv2zlYtQIU.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '10.31.73.30' (RSA) to the list of known hosts.
    MGTU#exit
    Connection to 10.31.73.30 closed.
    

    Beispielfehler
    — . MAC OS X — .
  • Verbindung mit dem Standardschlüssel (Standardschlüssel - das System selbst findet und verwendet den öffentlichen Standardschlüssel):

    artemiy-2:~ ArtemiySP$ ssh r6@10.31.73.31
    The authenticity of host '10.31.73.31 (10.31.73.31)' can't be established.
    RSA key fingerprint is SHA256:2/ysACJQw48Q8S45ody4wna+6nJspcsEU558HiUN43Q.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '10.31.73.31' (RSA) to the list of known hosts.
    PR#exit
    Connection to 10.31.73.31 closed.
    artemiy-2:~ ArtemiySP$ 
    


So vereinfachen Sie die Arbeit mit SSH unter MAC OS X:


  • Erstellen Sie SSH-Aliase.
  • In SSH-Aliasen setzen wir die Benutzer sofort.
  • Registrieren Sie sofort die Position der Schlüssel.

Der Speicherort der Aliase und die vorkonfigurierte SSH-Konfiguration sind in der Datei ~ / .ssh / config (/Users/[Username†/.ssh/config) angegeben.

Auf diese Weise gefüllt:

host r4
   Hostname 10.31.73.29
   Port 22
   User r4
   IdentityFile ~/Documents/python/r4

host r5
   Hostname 10.31.73.30
   Port 22
   User r5
   IdentityFile ~/Documents/python/r5

host r6
   Hostname 10.31.73.31
   Port 22
   User r6

Hinweis: Meine Standardverbindung ist falsch konfiguriert (ich weiß nicht, wie richtig), da die Verbindung zum R6-Host (10.31.73.31) sehr lange dauert. Es wird empfohlen, dass Sie sofort den Pfad zum Standardschlüssel angeben.

Ein Beispiel für eine SSH-Verbindung mit öffentlichen Schlüsseln und einer Konfigurationsdatei:

artemiy-2:Documents ArtemiySP$ ssh r5
MGTU#exit
Connection to 10.31.73.30 closed by remote host.
Connection to 10.31.73.30 closed.
artemiy-2:Documents ArtemiySP$ ssh r4
CSR-4#exit
Connection to 10.31.73.29 closed by remote host.
Connection to 10.31.73.29 closed.
artemiy-2:Documents ArtemiySP$ ssh r6
PR#exit
Connection to 10.31.73.31 closed.
artemiy-2:Documents ArtemiySP$ ssh r6
PR#


Fazit


RSA-Schlüssel können verwendet werden, um die Kennwortauthentifizierung zu ersetzen, jedoch nicht in allen Fällen:

  • Die Authentifizierung mit öffentlichem Schlüssel ist nicht möglich, wenn die Domänenauthentifizierung konfiguriert ist (da LDAP-Anforderungen (Kerberos) an den Server zur Authentifizierung als Proxy verwendet werden).
  • Die Authentifizierung mit öffentlichem Schlüssel auf alten Netzwerkgeräten ist nicht möglich (Beispiel: Konfiguration auf Cisco Catalyst 2960 mit Firmware 12.2 fehlgeschlagen).

Passwortgeschützte öffentliche Schlüssel werden bequem in Bankgeräten verwendet. Nachteil: Es ist notwendig, eine Reihe von privaten und öffentlichen Schlüsseln an Kollegen und Partner zu senden.

Bei einigen Geräten können mehrere Paare öffentlicher Schlüssel einem Benutzer entsprechen, bei anderen Geräten entspricht nur ein öffentlicher Schlüssel einem Benutzer.

Es gibt auch verschiedene Formate, in denen ein Paar öffentlicher und privater Schlüssel gespeichert ist. Diese Anleitung hilft Ihnen jedoch beim Exportieren von Schlüsseln in verschiedenen Formaten.

Heutzutage ist es optimal, Schlüssel mit einer Länge von 2048 Bit zu verwenden, aber für einige Geräte ist dies die maximal mögliche Schlüssellänge (möglicherweise wird dies in der neuen Firmware behoben). Zum Beispiel:

[R1]rsa peer-public-key test-key2 encoding-type pem
Enter "RSA public key" view, return system view with "peer-public-key end".
NOTE: The number of the bits of public key must be between 769 and 2048.
[R1-rsa-public-key]

Es wird empfohlen, öffentliche Schlüssel zu verwenden, um Kennwörter zu ersetzen, wenn Kennwörter mithilfe von Skripten eingegeben werden (Beispiel: Autologon in SecureCRT).

Es wird empfohlen, öffentliche Schlüssel zum Schutz vor Kennwortübertragung über das Netzwerk zu verwenden.

Einige Softwareprogramme verwenden standardmäßig öffentliche Schlüssel für die SSH-Authentifizierung anstelle eines Kennworts (Beispiel: Ansible).


Liste der Quellen:


  1. Wikipedia RSA
  2. Konvertierung von Putty zu SecureCRT mit auth. Schlüssel, SecureCRT Forum
  3. Secure Shell-Konfigurationshandbuch, Cisco IOS Release 15E
  4. Laden Sie PuTTYgen herunter
  5. Offizielle Dokumentation von Huawei - eine Beschreibung der verschiedenen Schlüsselformate für den Import in einen Huawei-Router
  6. Huawei USG 6000, Konfigurieren der Authentifizierung mit öffentlichem Schlüssel (CLI: Beispiel für die Anmeldung bei der CLI mithilfe von STelnet (RSA-Authentifizierung))
  7. Nexus 9000 Configuration guide SSH public key
  8. man ssh-keygen — mac os x.
  9. SSH config file MAC OS X
  10. SSH
  11. SSH config
  12. openssh public key RFC4716

All Articles