Выполнение удаленных команд на CISCO Дневник Максим Боголепов
Для решения поставленной задачи необходимо выполнить следующее:
1. Заходим на cisco и в режиме конфигурирования включаем возможность удаленного выполнения команд:
2. Для безопасности необходимо указать с какого интерфейса будут осуществляться команды удаленного управления. В моем случае команда для cisco выглядит так:
— где GigabitEthernet0/1.1 интерфейс одной из локальных сетей, в которой находится сервер FreeBSD.
3. Необходимо указать имя локального пользователя cisco, от имени которого удаленный пользователь будет выполнять команды, ip адрес (или hostname) удаленного сервера и само имя удаленного пользователя. Данная команда будет иметь следующий вид:
— где cisco_user – локальный пользователь, заведенный на cisco; — 192.168.100.3 – ip адрес сервера, с которого будут выполняться команды удаленного администрирования; — remote_user – имя пользователя на удаленном сервере, от имени которого будут выполняться команды удаленного администрирования (в моем случае – это root сервера FreeBSD); — 15 – уровень привилегий, с которыми будет работать локальный пользователь cisco.
Некоторое отступление. В моем случае, в качестве локального пользователя cisco, мною был использован пользователь admin, уже заведенный на cisco командой:
— где: admin – собственно – имя пользователя; — 15 – уровень привилегий (в данном слечае – максимальный); — swordfish – пароль (замените на свой).
Если вам необходимо, создайте еще одного пользователя с привилегиями, отличными от 15, и пропишите ему команды, которые он будет иметь право с данным уровнем привилегий исполнять. Например, создадим пользователя traf с уровнем привилегий 5 и дадим ему возможность собирать и обнулять статистику какого-либо интерфейса по ip accounting. Листинг команд будет следующим:
4. Если вы в предыдущей команде указали ip адрес удаленного сервера, а не его hostname, вам необходимо дать следующую команду:
— которая отключит проверку соответствия ip в базе DNS его hostname, т.к. при неудачном сопоставлении – у вас не получится выполнить удаленные команды на cisco. В принципе, если ваш DNS настроен правильно, то данную команду можно опустить.
5. Нам осталось включить отладку проделанной работы, чтобы в случае неудачи иметь возможность отследить ошибки. Делается это так:
Просмотр отладочной информации осуществляется так:
Отключение отладочной информации будет осуществлена следующей командой:
На этом подготовку cisco к выполнению удаленных команд можно считать завершенной.
Листинг проделанной работы:
Для проверки выполнения удаленных команд с сервера FreeBSD выполним под root’ом на нем команду:
Синтаксис команды прост: — после флага -l идет имя локального пользователя в cisco; — 192.168.100.2 – ip адрес cisco; — show clock – команда, которая должна выполниться на cisco.
Если после отработки данной команды вы получите примерно тоже самое, то задача решена.
Теперь настало время разобрать нюансы. Все они связаны с уже существующим настройками виртуальной консоли на вашей cisco — line vty 0 4.
При моей первой попытке выполнить удаленную команду на cisco у меня выскочила ошибка No free VTYs :
Как оказалось, в моих настройках данной виртуальной консоли при подключении к ней, был обозначен только протокол ssh (transport input ssh). Для выполнения удаленных команд требуется еще и протокол telnet. (Причем при исходящих соединениях протокол telnet не обязателен). Так что настройки line vty 0 4 в этой части должны выглядеть так:
Следующая ошибка, которая может у вас возникнуть, Permission denied. Она возникает, если вы неправильно указали локального пользователя в cisco, от имени которого должны выполняться удаленные команды:
В данном примере мною был указан пользователь root, не имеющий никакого отношения к самой cisco. Если вы не хотите путаться, то заведите пользователя на cisco с таким именем и не забудьте поправить команду ip rcmd remote-host на что-то подобное:
Опять же, из-за существующих настроек в моей cisco, я получил ошибку следующего рода – Access denied :
На этот раз дело оказалось в настройке списка доступа, указанном мною в line vty 0 4:
Список acl_login выглядел сперва так:
Для выполнения удаленных команд необходимо еще разрешить подключение к 514 порту (cmd). После правки список доступа стал выглядеть так:
Настройка line vty 0 4 выглядит полностью так:
В заключении осталось указать на возможные решения при выполнении удаленных команд на cisco, требующих подтверждения [confirm]. В интерактивном режиме с ним проблем нет, но возникает вопрос, как послать его через rsh? Сам я пока с таким не сталкивался. Но вот тут подсказывают:
Вот теперь, действительно – все! :)
_____ В современных версиях FreeBSD в явном виде команда rsh отсутствует. Чтобы она появилась необходимо установить пакет net/bsdrcmds