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

Записки и примеры конфигураций IOS/RouterOS
Ответить
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

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

Сообщение root »

Оглавление
Темы
Предварительная настройка
Генерируем ключи
Установка авторизованного RSA-ключа для SSH
Удаление паролей
Отключить пароли полностью
Авторизация по ключу может быть недоступна для IOS версии ниже 15 Перед созданием ключей нужно задать имя маршрутизатора/коммутатора (если ещё не задано) или сменить его (если есть такая потребность). А так же указать доменное имя

Код: Выделить всё

Router#configure terminal
Router(config)#hostname gw1
gw1(config)#ip domain-name corp.ru
Настраиваем входящий и исходящий протокол для всех линий vty. Выставляем только SSH

Код: Выделить всё

configure terminal
line vty 0 4
transport input ssh
transport output ssh

Создаём пару RSA-ключей (секретный и публичный) на машине с которой требуется организовать доступ, если это нужно

Код: Выделить всё

ssh-keygen -t rsa -b 2048 -q -C "$(whoami)@$(hostname)-$(date -I)" -N '' -f ~/.ssh/test
Теперь автоматизируем добавление созданного приватного ключа в SSH-агент. Дописываем следующий код в конец файла .bash_profile

Код: Выделить всё

function SSH-AGENT() {
	eval "$(ssh-agent -s)"
	ssh-add ~/.ssh/test
}
SSH-AGENT
Теперь можно настроить своё рабочее место для подключения к оборудованию. В каталоге ~/.ssh создадим файл config и пропишем в него некоторые параметры
e ~/.ssh/config

Код: Выделить всё

Host *
AddressFamily inet
Protocol 2
Compression yes
ForwardAgent yes
ForwardX11Trusted no
GSSAPIAuthentication no
PreferredAuthentications=publickey,password

Host gns
    HostName gns.free-adm.ru
    User root

Host corp.ru
    HostName gns.free-adm.ru
    Port 2222
    User root

Просмотр списка имеющихся RSA-ключей на оборудовании CISCO

Код: Выделить всё

show run | section ssh
Пример удаления ключа если существуют старые/неизвестные ключи. Значение для key-hash ssh-rsa можно взять с предыдущего шага

Код: Выделить всё

conf t
ip ssh pubkey-chain
username root
no key-hash ssh-rsa A90A7FDB040EADC860B5D22A5C04D0F8 root@google.loc
или удаляем все существующие ключи:

Код: Выделить всё

conf t
crypto key zeroize rsa
Обратите внимание, что в конфигурации не показывается реальный открытый ключ, но вместо его отображаться "отпечаток пальца" ключа. Сравните данный отпечаток с отпечатком вашего открытого ключа на хосте, с которого подключаетесь, чтобы проверить правильный ли ключ Вы загрузили.

Код: Выделить всё

ssh-keygen -l -f ~/.ssh/test.pub
Значения отпечатков должны совпадать. Разница регистров букв не учитывается
Перед тем как добавлять публичный ключ его необходимо подготовить к импорту на CISCO. Для этого нужно строку публичного ключа разбить на группу строк по 70 символов в строке.
fold -b -w 70 test.pub

Код: Выделить всё

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+acy/uOSzQjBSwI7mz8eXd8T/+pFkOe
LlYvQ+O2aVNqZzg8R9eOPjnF0FzcnovMnoWQcjRDmXy69hMhqfRq3yPtnMvT++v+Si0OR5
QUyRvf/R8sS4ouGRaaoxjb+WPfvKYJL2GQC5e708ys3P64/Gp4loTdYLLjwHfTxm8S0Vfy
5HHqFvB9jLvC2kfhJI4iZcBtmt7m2L+Q2z63YqirqvJTOX3kc0TKa+6TxyaM6ta1JShAd1
5mXeIMC+en0LduzovY/HN5c1hfZ3Bbz58LdGSdyMN96mudtMYn+0CzumrLd4VpnUuU0/X8
8lzjcnITZyJ0fJkQLEJigXEX2rPlzh root@sergey.free-adm.ru-2020-01-09
Теперь подготовленный ключ можно использовать в конфигурации маршрутизатора

Код: Выделить всё

conf t
ip ssh pubkey-chain
username root
key-string
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+acy/uOSzQjBSwI7mz8eXd8T/+pFkOe
LlYvQ+O2aVNqZzg8R9eOPjnF0FzcnovMnoWQcjRDmXy69hMhqfRq3yPtnMvT++v+Si0OR5
QUyRvf/R8sS4ouGRaaoxjb+WPfvKYJL2GQC5e708ys3P64/Gp4loTdYLLjwHfTxm8S0Vfy
5HHqFvB9jLvC2kfhJI4iZcBtmt7m2L+Q2z63YqirqvJTOX3kc0TKa+6TxyaM6ta1JShAd1
5mXeIMC+en0LduzovY/HN5c1hfZ3Bbz58LdGSdyMN96mudtMYn+0CzumrLd4VpnUuU0/X8
8lzjcnITZyJ0fJkQLEJigXEX2rPlzh root@sergey.free-adm.ru-2020-01-09
exit
end

Вы можете удалить пароли пользователей в конфигурации; это заставит этих пользователей использовать аутентификацию по ключу ssh. Если этим людям требуются права администратора, им все равно нужно будет знать пароль от режима enable, или их логин может перенаправить непосредственно в enable-режим:

Код: Выделить всё

username root privilege 15

Если вы хотите полностью отключить аутентификацию по паролю через ssh, но оставить пароли в учетных записях пользователей для других целей (например, для доступа к консоли), используйте:

Код: Выделить всё

no ip ssh server authenticate user password
no ip ssh server authenticate user keyboard
Ответить