25.5. Ключи для доступа по SSH
Сервер управления OpenNebula подключается к хостам гипервизора по SSH. Необходимо распространить открытый ключ пользователя oneadmin со всех машин в файл /var/lib/one/.ssh/authorized_keys
на всех машинах.
При установке сервера управления OpenNebula ключ SSH был сгенерирован добавлен в авторизованные ключи. Необходимо синхронизировать id_rsa, id_rsa.pub и authorized_keys сервера управления и узлов. Кроме того, следует создать файл known_hosts и также синхронизировать его с узлами. Чтобы создать файл known_hosts, необходимо выполнить следующую команду (от пользователя oneadmin на сервере управления) со всеми именами узлов и именем сервера управления в качестве параметров:
$ ssh-keyscan <сервер управления> <узел1> <узел2> <узел3> ... >> /var/lib/one/.ssh/known_hosts
Команду
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 host01 >> /var/lib/one/.ssh/known_hosts
Далее необходимо нужно скопировать каталог
/var/lib/one/.ssh
на все узлы. Самый простой способ — установить временный пароль для oneadmin на всех хостах и скопировать каталог с сервера управления:
$ scp -rp /var/lib/one/.ssh <узел1>:/var/lib/one/
$ scp -rp /var/lib/one/.ssh <узел2>:/var/lib/one/
$ scp -rp /var/lib/one/.ssh <узел3>:/var/lib/one/
...
После этого необходимо убедиться, что при подключении от сервера управления под пользователем oneadmin к узлам и самому серверу управления, а также от узлов к серверу управления пароль не запрашивается.
Если требуется дополнительный уровень безопасности, можно хранить закрытый ключ только на сервере управления, а не копировать его на весь гипервизор. Таким образом, пользователь oneadmin в гипервизоре не сможет получить доступ к другим гипервизорам. Это достигается путем изменения
/var/lib/one/.ssh/config
на сервере управления и добавления параметра ForwardAgent к хостам гипервизора для пересылки ключа:
$ cat /var/lib/one/.ssh/config
Host host1
User oneadmin
ForwardAgent yes
Host host2
User oneadmin
ForwardAgent yes