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:\users\admin\.ssh\id_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
KbdInteractiveAuthentication no
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:\Users\administrator\.ssh\id_rsa"

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

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

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

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

Предыдущая статья Следующая статья


Комментариев: 2 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)