dawno, dawno temu pisałem o tym jak uwierzytelniać się kluczami przez SSH do urządzeń pracujących pod kontrolą IOS XE oraz do ASA/FTD.

ponieważ duzi chłopcy z reguły pracują z IOS XR, poniżej szybki przewodnik jak zaimportować klucze do tego systemu w wersjach 7.0+.

OpenSSH i format PEM

pierwszym krokiem jest przerobienie formatu używanego przez OpenSSH na format PEM. można to zrobić za pomocą ssh-keygen:

.ssh % ssh-keygen -f id_rsa.pub -m pem -e > id_rsa.pub.pem
.ssh % more id_rsa.pub.pem
-----BEGIN RSA PUBLIC KEY-----
MIICCgKCAgEAwoiwWqKVMLBW/WCTYRqlWKgWo5ax8JveTdRcnOCr6uHu9tE5hYQu
[...]
Vy83y6dMzKGdC/gTT0tI+FwUtDd7fFZfKFYsaiHhtv7KTsKQHyp4cdkCAwEAAQ==
-----END RSA PUBLIC KEY-----

import klucza do IOS XR

drugim krokiem jest wklejenie tekstu z pliku PEM przez konsolę do IOS XR, choć można również plik PEM przetransportować na dysk urządzenia i wskazać go do importu. dla użytkownika test1 import przez konsolę będzie wyglądał tak:

RP/0/RP0/CPU0:URZADZENIE_Z_IOS_XR#crypto key import authentication rsa username test1
Enter the public key
-----BEGIN RSA PUBLIC KEY-----
MIICCgKCAgEAwoiwWqKVMLBW/WCTYRqlWKgWo5ax8JveTdRcnOCr6uHu9tE5hYQu
[...]
Vy83y6dMzKGdC/gTT0tI+FwUtDd7fFZfKFYsaiHhtv7KTsKQHyp4cdkCAwEAAQ==
-----END RSA PUBLIC KEY-----
        

tak, to nie błąd formatowania - na końcu należy wprowadzić pustą linię wciskając Enter. po tym zabiegu, możesz dodatkowo sprawdzić czy klucz został zaimportowany poprawnie:

RP/0/RP0/CPU0:URZADZENIE_Z_IOS_XR#sh crypto key authentication rsa all
Key label: test1
Type     : RSA public key authentication
Size     : 4096
Imported : 10:57:24 UTC Sun Jul 21 2023
Data     : 
 30820222 300D0609 2A864886 F70D0101 01050003 82020F00 3082020A 02820201 
[...]
 D9020301 0001

test

teraz najprościej zweryfikować, że konfiguracja działa próbując zalogować się z urządzenia z kluczem na skonfigurowane urządzenie z IOS XR:

.ssh % ssh test1@ADRES_IP_URZADZENIA_Z_IOS_XR
Host key fingerprint is SHA256:tM4LXt[...]

RP/0/RP0/CPU0:URZADZENIE_Z_IOS_XR#

dalsze utwardzenie

skoro jesteśmy w stanie zalogować się na urządzenie za pomocą kluczy, po co zostawiać otwartą furtkę Złym Ludziom skanującym masowo hosty z SSH i próbującym różne kombinacje loginów i haseł? w szczególności, jeśli Twoj router musi mieć otwarty port SSH do świata? nic prostszego:

RP/0/RP0/CPU0:URZADZENIE_Z_IOS_XR#conf t
RP/0/RP0/CPU0:URZADZENIE_Z_IOS_XR(config)#ssh server v2
RP/0/RP0/CPU0:URZADZENIE_Z_IOS_XR(config)#ssh server disable auth-methods password
RP/0/RP0/CPU0:URZADZENIE_Z_IOS_XR(config)#ssh server disable auth-methods keyboard-interactive
RP/0/RP0/CPU0:URZADZENIE_Z_IOS_XR(config)#commit

miłego logowania kluczami :)