VMware ESXi: SSH аутентификация с помощью ключей

Вы можете настроить аутентификацию с помощью ключей на хостах VMware ESXi вместо стандартного SSH подключения с помощью имени пользователя и пароля. Это удобно, когда вам нужно удаленно управлять хостом ESXi с помощью внешних скриптов (например отправить команду выключения на ESXi при пропадании питания на ИБП) или при управлении хостами VMware ESXi через Ansible .

Сгенерируйте закрытый и открытый ключи на компьютере администратора.

Для SSH аутентификации нужно использовать RSA ключи как минимум длиной 4096 бит. Чтобы сгенерировать пару RSA ключей длиной 4096 на Windows, выполните команду:

ssh-keygen -t rsa -b 4096

Сгенерировать RSA ключи для SSH

В новых билдах OpenSSH вместо RSA ключей рекомендуется использовать протокол Ed25519 ( use RSA/SHA256 when testing usability of private keys as some systems are starting to disable RSA/SHA1 in libcrypto ). В ESXi 8.0 мне удалось подключиться с помощью пары Ed25519 ключей только после отключения опции FipsMode no в /etc/ssh/sshd_config.

Чтобы сгенерировать ключи id_ed25519 и id_ed25519.pub выполните:

ssh-keygen -t ed25519

Утилита сгенерирует два файла в каталоге с профилем текущего пользователя (%USERPROFILE%.ssh):

  • id_rsa – закрытый ключ
  • id_rsa.pub – публичный (открытый) ключ
Если вы генерируете ключи с помощью Puttygen, их нужно экспортировать в формате OpenSSH.

Скопируйте открытый ключ id_rsa.pub с вашего компьютера на хост VMware ESXi. Этот ключ нужно добавить в файл /etc/ssh/keys-$USER/authorized_keys . Если это ключ для пользователя root, путь к файлу будет такой:

/etc/ssh/keys-root/authorized_keys

Подключитесь к серверу ESXi по SSH (в настройках хоста ESXi нужно разрешить доступ по SSH ).

Вы можете отредактировать файл вручную (в файле можно хранить несколько ключей) или добавить его на сервер ESXi с помощью PowerShell команды:

cat c:usersadmin.sshid_rsa.pub | ssh [email protected] 'cat >> /etc/ssh/keys-root/authorized_keys'

Скопировать открытый ключ на ESXi в etc/ssh/keys-root/authorized_keys

Настройки OpenSSH сервера на хосте ESXi находятся в файле /etc/ssh/sshd_config .

Можно включить/отключить доступ под root с помощью директивы:

PermitRootLogin yes

Отключить SSH вход по паролю:

ChallengeResponseAuthentication no # deprecated_x000D_KbdInteractiveAuthentication no_x000D_PasswordAuthentication no

Запретить доступ по паролю к ESXi SSH

Перезапустите SSH на ESXi:

# /etc/init.d/SSH restart

Также вы можете распространить SSH ключи на хосты ESXi с помощью VMware Host Profiles (Security Configuration -> SSH authorized key for root user -> Add public key)

VMware Host Profiles - скопировать открытый ключ на все хосты

Теперь вы можете подключиться к ESXi хосту без ввода пароля с помощью закрытого ключа. В Windows с включенным агентом ssh-agent при подключении к хосту автоматически будет использоваться закрытый ключ из профиля пользователя:

ssh [email protected]

ssh вход на VMware ESXi без пароля с помощью ключа

Также вы можете указать путь к ключу с помощью параметра -i:

ssh [email protected] -i "C:Usersadministrator.sshid_rsa"

Вы можете удаленно выполнить произвольную команду в консоли ESXi. Например, выключить определенную виртуальную машину :

ssh [email protected] vim-cmd vmsvc/power.shutdown VMID

выполнить команду на ESXi по ssh с помощью закрытого ключа

В VMware ESXi 7.0 U2 и выше пароли в файле local.tgz.ve зашифрованы, поэтому сбросить пароль root в ESXi с помощью этой процедуры не получится. В этом случае аутентификация по ключам позволит вам подключиться к серверу без ввода пароля root.

EnglishRussianUkrainian