25.5. Ключи для доступа по SSH
Сервер управления OpenNebula (Front-end) должен иметь беспарольный SSH-доступ ко всем узлам гипервизора от имени пользователя oneadmin. Для корректной работы OpenNebula используются следующие типы соединений:
от сервера управления к самому серверу управления;
от сервера управления к каждому узлу гипервизора;
от сервера управления к узлу гипервизора с последующим подключением к другому узлу гипервизора (для операций миграции ВМ);
от сервера управления к узлу гипервизора с последующим подключением обратно к серверу управления (для операций копирования данных).
Необходимо убедиться, что сервер управления и все узлы гипервизора могут подключаться друг к другу по SSH без ручного вмешательства (без запроса пароля и подтверждения ключей).
Для включения беспарольных подключений необходимо распространить открытый SSH-ключ пользователя oneadmin со всех машин в файл /var/lib/one/.ssh/authorized_keys на всех узлах инфраструктуры.
При установке сервера управления OpenNebula автоматически генерируется пара SSH-ключей для пользователя oneadmin (/var/lib/one/.ssh/id_rsa и /var/lib/one/.ssh/id_rsa.pub), а также открытый ключ добавляется в файл /var/lib/one/.ssh/authorized_keys.
На узлах виртуализации пара SSH-ключей не генерируется автоматически. При необходимости ключи можно создать вручную, выполнив команду:
$ ssh-keygen -t rsa -f /var/lib/one/.ssh/id_rsa -N ""
25.5.1. Управление списком доверенных узлов (known_hosts)
Необходимо подготовить и поддерживать актуальный список открытых SSH-ключей узлов (файл known_hosts), чтобы все взаимодействующие стороны могли идентифицировать друг друга без запроса подтверждения.
Файл располагается по пути
/var/lib/one/.ssh/known_hosts. Для его создания и обновления используется команда
ssh-keyscan, например:
$ ssh-keyscan <сервер_управления> <узел1> <узел2> <узел3> ... >> /var/lib/one/.ssh/known_hosts
Команду следует выполнить от имени пользователя oneadmin на сервере управления, после чего полученный файл необходимо скопировать на все узлы гипервизора.
Команду
ssh-keyscan необходимо выполнять как для имён узлов, так и для их IP-адресов:
$ ssh-keyscan <IP-узел1> <hostname-узел1> ... >> /var/lib/one/.ssh/known_hosts
Например:
$ ssh-keyscan 192.168.0.185 server 192.168.0.190 host-01 >> /var/lib/one/.ssh/known_hosts
Файл
known_hosts необходимо обновлять и распространять заново каждый раз, когда: