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 :)