SSH, аутентификация по public key с Linux на Cisco

Допустим вам необходимо настроить некоторую автоматизацию на Cisco с помощью Ansible. Для этого первым делом вам необходимо настроить подключение по SSH без использования пароля. В этой статье я расскажу как это сделать.

Начальная конфигурация

В этом примере я использую Cisco 2911 с IOS 15.7(3)M3.

Сторона клиента

Я предполагаю, что клиент - это разновидность Unix, просто потому, что это более распространенный способ. Однако этот метод работает в Windows, используя Putty и другие эмуляторы терминала.

Давайте проверим, что у нас уже есть открытый ключ:
cat .ssh/id_rsa.pub

Если его там нет, вы можете сгенерировать его с помощью команды:
ssh-keygen

Сторона сервера

На Cisco создайте пользователя:
username test priv 15 secret supers3cr3tn0bdyw1llgue55

Вы должны убедиться, что этот открытый ключ (id_rsa.pub на Linux) является доверенным для нашего роутера. 

На роутере выполните эти команды:
ip ssh pubkey-chain
     username test
          key-string
               Скопируйте весь открытый ключ, как показано в cat id_rsa.pub, включая ssh-rsa и 
               username@hostname.
               Обратите внимание, что некоторые версии IOS могут принимать до 254 символов.
               Вы можете вставить несколько строк.
          exit
     exit

Также убедитесь, что вы генерируете ключи RSA на сервере размером более 768 бит. Вы также должны установить SSHv2 на стороне сервера (хотя, строго говоря, это не требуется, если вы используете SSH 1.99).
ip ssh version 2

Проверка

Обычно большинство устройств предпочитают следующий порядок аутентификации:
  1. publickey
  2. keyboard-interactive
  3. password
Такой порядок позволяет нам использовать аутентификацию с открытым ключом без каких-либо дополнительных изменений.

Таким образом после выполнения вышеописанных шагов, вы сможете подключиться без использования пароля:
Linux# ssh -2 -v test@example.com

Добавить комментарий