Cisco-ssh-key-auth: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
 
(не показано 8 промежуточных версий этого же участника)
Строка 1: Строка 1:
 
[[Категория:Cisco]]
 
[[Категория:Cisco]]
[[Категория:ssh]]
+
[[Категория:SSH]]
   
 
=Авторизация на роутере по ключу=
 
=Авторизация на роутере по ключу=
Строка 22: Строка 22:
 
Router(config)#hostname R1
 
Router(config)#hostname R1
 
</PRE>
 
</PRE>
===2===
+
===ip domain-name===
  +
Этот шаг по моему опыту обязательный - без него будет ошибка
  +
<PRE>
  +
% Please define a domain-name first.
  +
</PRE>
  +
  +
<PRE>
  +
ip domain-name home.net
  +
</PRE>
  +
или
  +
<PRE>
  +
ip domain name home.net
  +
</PRE>
  +
  +
===Сгенерировать ключ===
  +
где он хранится я не знаю
  +
<PRE>
  +
crypto key generate rsa modulus 2048
  +
% You already have RSA keys defined named ASR1001-lab.web.
  +
% They will be replaced.
  +
  +
% The key modulus size is 2048 bits
  +
% Generating 2048 bit RSA keys, keys will be non-exportable...
  +
[OK] (elapsed time was 1 seconds)
  +
  +
ASR1001-lab(config)
  +
</PRE>
  +
  +
В зависимости от модели устройства (и версии иос?) эта команда <code>crypto key generate rsa</code> может запускаться из режима конфигурирования (например так на catalyst 4948e)
  +
<BR>
  +
Если ключи короче 2048 - то может возникать ошибка (я проверял только на свитче)
  +
<PRE>
  +
ssh_dispatch_run_fatal: Connection to 10.72.0.254 port 22: Invalid key length
  +
</PRE>
  +
Решается перегенерацией ключа
  +
<PRE>
  +
conf t
  +
crypto key zeroize rsa
  +
crypto key generate rsa modulus 2048
  +
end
  +
</PRE>
  +
  +
===Включить вторую версию протокола ssh ===
  +
<PRE>
  +
ip ssh version 2
  +
</PRE>
  +
  +
===Настроить линии===
  +
<PRE>
  +
line vty 0 4
  +
transport input ssh
  +
login local
  +
</PRE>
  +
Ну и пример
  +
<PRE>
  +
line con 0
  +
timeout login response 300
  +
authorization exec LOCAL-AUTHORIZATION
  +
login authentication LOCAL-AUTH
  +
stopbits 1
  +
line aux 0
  +
stopbits 1
  +
line vty 0 4
  +
exec-timeout 0 0
  +
authorization exec LOCAL-AUTHORIZATION
  +
transport input telnet ssh
  +
line vty 5 97
  +
exec-timeout 0 0
  +
authorization exec LOCAL-AUTHORIZATION
  +
transport input telnet ssh
  +
</PRE>
  +
  +
===Отключение паролей (по желанию)===
  +
<PRE>
  +
no ip ssh server authenticate user password
  +
no ip ssh server authenticate user keyboard
  +
</PRE>
  +
  +
===Прописать ключ===
  +
  +
<PRE>
  +
ASR1001-lab(config)#ip ssh pubkey-chain
  +
ASR1001-lab(conf-ssh-pubkey)#usernam
  +
ASR1001-lab(conf-ssh-pubkey)#username sirmax
  +
ASR1001-lab(conf-ssh-pubkey-user)#key-string
  +
ASR1001-lab(conf-ssh-pubkey-data)#AAAAB3NzaC1yc2EAAAADAQABAAABAQC5EIrDnnxNBQavZcxiaHCzt0tjtfW0nNuFAz9f+fs4
  +
ASR1001-lab(conf-ssh-pubkey-data)#dL0/3wTbDCWO1l2tahTlupM8r/Tm4Sq20Gsrndl37zEFoqFZG42m1COuEMBgppl4er0cetlZ
  +
ASR1001-lab(conf-ssh-pubkey-data)#V0qeKfcKQ0xXlZUE1LMJwQoBqAFl4QJ6g25PSPESJxd3wQ1RUfjvJ9kvW8c4sLHD0MjLAmX+
  +
ASR1001-lab(conf-ssh-pubkey-data)#VjFlbqNtM1l3uAIMc17RP4B2u4s2FqoyCjg9IxcGlL364FOWJZdHjFaBJvg1k4zo+WzSA2Yt
  +
ASR1001-lab(conf-ssh-pubkey-data)#OgFxI0CWHUTIcjLD6d3np534zONNxjxsrUz5MBROPUQYOT9y3m9RDBXJVhdvk7V7lTzFYsrT
  +
ASR1001-lab(conf-ssh-pubkey-data)#rsJy+gu0pTCL
  +
ASR1001-lab(conf-ssh-pubkey-data)#exit
  +
</PRE>
  +
  +
не забыть ключевое слово <code>exit</code> в конце ключа
  +
  +
==Конфиг ssh==
  +
<PRE>
  +
Host asr1001
  +
SendEnv LANG LC_*
  +
Ciphers +aes256-cbc
  +
HostKeyAlgorithms=+ssh-dss,ssh-rsa
  +
KexAlgorithms=+diffie-hellman-group1-sha1
  +
</PRE>
  +
  +
Этот конфиг реашет следующие ошибки
  +
<PRE>
  +
Unable to negotiate with 10.72.0.50 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
  +
</PRE>
  +
<PRE>
  +
Unable to negotiate with 10.72.0.50 port 22: no matching host key type found. Their offer: ssh-rsa
  +
</PRE>

Текущая версия на 17:02, 22 октября 2024


Авторизация на роутере по ключу

Отформатировать ключ в нужный формат

Хотя однострочный ключ несомненно валидный - но на железке есть ограничение на длинну строки и удобнее ключ порезать на строки, и оставить только собственно сам ключ

cat ~/.ssh/id_rsa_local.pub | awk '{ print $2 }' | fold -b -w 72
AAAAB3NzaC1yc2EAAAADAQABAAABAQC5EIrDnnxNBQavZcxiaHCzt0tjtfW0nNuFAz9f+fs4
<skipped>
OgFxI0CWHUTIcjLD6d3np534zONNxjxsrUz5MBROPUQYOT9y3m9RDBXJVhdvk7V7lTzFYsrT
rsJy+gu0pTCL

Настройка роутера

Установить hostname

Router(config)#hostname R1

ip domain-name

Этот шаг по моему опыту обязательный - без него будет ошибка

% Please define a domain-name first.
ip domain-name home.net

или

ip domain name home.net

Сгенерировать ключ

где он хранится я не знаю

crypto key generate rsa modulus 2048
% You already have RSA keys defined named ASR1001-lab.web.
% They will be replaced.

% The key modulus size is 2048 bits
% Generating 2048 bit RSA keys, keys will be non-exportable...
[OK] (elapsed time was 1 seconds)

ASR1001-lab(config)

В зависимости от модели устройства (и версии иос?) эта команда crypto key generate rsa может запускаться из режима конфигурирования (например так на catalyst 4948e)
Если ключи короче 2048 - то может возникать ошибка (я проверял только на свитче)

ssh_dispatch_run_fatal: Connection to 10.72.0.254 port 22: Invalid key length

Решается перегенерацией ключа

conf t
crypto key zeroize rsa
crypto key generate rsa modulus 2048
end

Включить вторую версию протокола ssh

ip ssh version 2

Настроить линии

line vty 0 4
  transport input ssh
  login local

Ну и пример

line con 0
 timeout login response 300
 authorization exec LOCAL-AUTHORIZATION
 login authentication LOCAL-AUTH
 stopbits 1
line aux 0
 stopbits 1
line vty 0 4
 exec-timeout 0 0
 authorization exec LOCAL-AUTHORIZATION
 transport input telnet ssh
line vty 5 97
 exec-timeout 0 0
 authorization exec LOCAL-AUTHORIZATION
 transport input telnet ssh

Отключение паролей (по желанию)

no ip ssh server authenticate user password
no ip ssh server authenticate user keyboard

Прописать ключ

ASR1001-lab(config)#ip ssh pubkey-chain
ASR1001-lab(conf-ssh-pubkey)#usernam
ASR1001-lab(conf-ssh-pubkey)#username sirmax
ASR1001-lab(conf-ssh-pubkey-user)#key-string
ASR1001-lab(conf-ssh-pubkey-data)#AAAAB3NzaC1yc2EAAAADAQABAAABAQC5EIrDnnxNBQavZcxiaHCzt0tjtfW0nNuFAz9f+fs4
ASR1001-lab(conf-ssh-pubkey-data)#dL0/3wTbDCWO1l2tahTlupM8r/Tm4Sq20Gsrndl37zEFoqFZG42m1COuEMBgppl4er0cetlZ
ASR1001-lab(conf-ssh-pubkey-data)#V0qeKfcKQ0xXlZUE1LMJwQoBqAFl4QJ6g25PSPESJxd3wQ1RUfjvJ9kvW8c4sLHD0MjLAmX+
ASR1001-lab(conf-ssh-pubkey-data)#VjFlbqNtM1l3uAIMc17RP4B2u4s2FqoyCjg9IxcGlL364FOWJZdHjFaBJvg1k4zo+WzSA2Yt
ASR1001-lab(conf-ssh-pubkey-data)#OgFxI0CWHUTIcjLD6d3np534zONNxjxsrUz5MBROPUQYOT9y3m9RDBXJVhdvk7V7lTzFYsrT
ASR1001-lab(conf-ssh-pubkey-data)#rsJy+gu0pTCL
ASR1001-lab(conf-ssh-pubkey-data)#exit

не забыть ключевое слово exit в конце ключа

Конфиг ssh

Host  asr1001
  SendEnv LANG LC_*
  Ciphers +aes256-cbc
  HostKeyAlgorithms=+ssh-dss,ssh-rsa
  KexAlgorithms=+diffie-hellman-group1-sha1

Этот конфиг реашет следующие ошибки

Unable to negotiate with 10.72.0.50 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
Unable to negotiate with 10.72.0.50 port 22: no matching host key type found. Their offer: ssh-rsa