Вы можете настроить аутентификацию с помощью ключей на хостах VMware ESXi вместо стандартного SSH подключения с помощью имени пользователя и пароля. Это удобно, когда вам нужно удаленно управлять хостом ESXi с помощью внешних скриптов (например отправить команду выключения на ESXi при пропадании питания на ИБП) или при управлении хостами VMware ESXi через Ansible.
Сгенерируйте закрытый и открытый ключи на компьютере администратора.
Для SSH аутентификации нужно использовать RSA ключи как минимум длиной 4096 бит. Чтобы сгенерировать пару RSA ключей длиной 4096 на Windows, выполните команду:
ssh-keygen -t rsa -b 4096
FipsMode no
в /etc/ssh/sshd_config.Чтобы сгенерировать ключи id_ed25519 и id_ed25519.pub выполните:
ssh-keygen -t ed25519
Утилита сгенерирует два файла в каталоге с профилем текущего пользователя (%USERPROFILE%\.ssh):
- id_rsa – закрытый ключ
- id_rsa.pub – публичный (открытый) ключ
Скопируйте открытый ключ 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'
Настройки OpenSSH сервера на хосте ESXi находятся в файле /etc/ssh/sshd_config.
Можно включить/отключить доступ под root с помощью директивы:
PermitRootLogin yes
Отключить SSH вход по паролю:
ChallengeResponseAuthentication no # deprecated KbdInteractiveAuthentication no PasswordAuthentication no
Перезапустите SSH на ESXi:
# /etc/init.d/SSH restart
Теперь вы можете подключиться к ESXi хосту без ввода пароля с помощью закрытого ключа. В Windows с включенным агентом ssh-agent при подключении к хосту автоматически будет использоваться закрытый ключ из профиля пользователя:
Также вы можете указать путь к ключу с помощью параметра -i:
ssh [email protected] -i "C:\Users\administrator\.ssh\id_rsa"
Вы можете удаленно выполнить произвольную команду в консоли ESXi. Например, выключить определенную виртуальную машину :
ssh [email protected] vim-cmd vmsvc/power.shutdown VMID