В этот раз мы рассмотрим сразу две функции Enable-VMHostSSH/Disable-VMHostSSH моего PowerCLI модуля для управления виртуальной инфраструктурой VMware Vi-Module.psm1.
Очень часто администраторам виртуальной инфраструктуры требуется временно включить SSH на хосте/хостах ESXi, например, для запуска esxtop или для выяснения причин PSOD или для решения проблем с СХД (HBA, Multi pathing и т.д.). Через SSH даже можно открыть CDROM хоста (eject /dev/cdrom/mpx.*) для определения его местоположения в стойке или подключиться к DCUI.
Чтобы включить SSH через GUI с помощью vSphere/Web Client вам потребуется сделать порядка 7-8 кликов, если учесть открытие файрвола. И это придётся сделать для каждого хоста в отдельности. А потом всё тоже самое в обратном порядке, чтобы отключить!
Итого, для маленького кластера из 5 хостов выйдет в районе 70 кликов мышкой. С помощью моих функций это 2 коротеньких строчки, одна для включения и вторая для выключения SSH (используйте ваше имя кластера):
PS C:\> Get-Cluster DEV |Enable-VMHostSSH
PS C:\> Get-Cluster DEV |Disable-VMHostSSH
Функции не только запускают/останавливают сервис SSH, но и открывают/блокируют доступ по SSH в файрволе хостов.
Естественно не забудьте предварительно подключиться к серверу vCenter.
В принципе, если вы не укажете на каком кластере/кластерах выполнять эти команды, они по умолчанию выполнятся на всех кластерах всех подключенных серверов vCenter данной сессии:
Используйте ещё одну функцию моего Vi-модуля Set-PowerCLITitle, чтобы точно знать куда именно вы подключены в данный момент.
Как и положено, обе функции возвращают структурированные объекты. Хочу заострить ваше внимание лишь на двух свойствах этих объектов - это SSHDaemon и SSHEnabled.
SSHDaemon - это состояние сервиса SSH.
Оно может принимать одно из трёх значений: Running/NotRunning/Unknown. Если на каком-либо из хостов вы получили значение этого свойства «Unknown», то причину вы найдёте в одном из двух других свойств: «State» и «PowerState» (либо ваш хост не включен в данный момент, либо недоступен).
SSHEnabled описывает состояние файрвола, разрешающего или запрещающего доступ к хосту по SSH.
Здесь надо отметить, что помимо остановки сервиса SSH, функция Disable-VMHostSSH пытается закрыть доступ по SSH (TCP:22) в файрволе, если вы укажете параметр -BlockFirewall.
При использовании этого параметра, свойство «SSHEnabled» должно принять значение «False» (т.е. файрвол заблокирован), но этого не произойдёт, если «SSH Server» Firewall Exception Rule у вас находится в категории «Required Services» (т.е. является обязательным). Кроме того, вы увидите сообщения об ошибке «Block firewall ports» в панели «Recent Tasks».
По большому счету, это совершенно не критично, достаточно того, что сервис SSH остановлен. Эта ситуация описана в VMware KB2037544.
Если вы всё-таки хотите иметь возможность блокировать файрволом трафик SSH, то поможет вам в этом следующая статья. Решение, предложенное в ней тоже требует включить SSH, так что вы уже можете это сделать с помощью Enable-VMHostSSH.
Ну и несмотря на то, что функции очень просты в использовании, я рекомендую вам посмотреть примеры: