Конфигурирование протоколов
Агент использует разные протоколы для соединения с сервером RHEVH. Можно сконфигурировать любой из этих протоколов: SSH, TLS или TCP.
Об этой задаче
Конфигурирование протокола SSH
Можно сконфигурировать протокол SSH для удаленного мониторинга хоста.
Об этой задаче
Процедура
-
Войдите на хост A, указав тот же ID пользователя, который запустил процесс
агент Linux KVM (например, ID
пользователя root).
Совет: Убедитесь, что вы знаете ID на хосте B, который принимает соединение SSH, и ID пользователя root на хосте А.
-
Сгенерируйте на хосте А ключи id_rsa и id_rsa.pub, используя утилиту ssh-keygen.
Ключи сохраняются в следующем расположении: ~/.ssh: $ ssh-keygen -t rsa.
-
Скопируйте авторизованные ключи с хоста B:
$ scp Id on host B@name or IP address of host B:~/.ssh/authorized_keys ~/.ssh/authorized_keys_from_B
-
Присоедините открытый ключ для хоста А в конец авторизованных ключей для хоста В:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys_from_B
- Скопируйте авторизованные ключи обратно на хост B:
-
Удалите авторизованные ключи, которые вы скопировали на хост B:
~/.ssh/authorized_keys_from_B
-
Добавьте в профиль ~/.bash_ текущего ID на хосте А следующую команду:
$ eval `ssh-agent`
Напоминание: Убедитесь, что вы используете обратный апостроф (`), расположенный под символом тильды (~) на клавиатурах US, а не простой апостроф ('). -
Добавьте идентификатор на хост А, введя пароль, который вы использовали при создании ID:
$ ssh-add ~/.ssh/id_rsa
-
Введите следующую команду, если вы получили сообщение Could not open a connection to your authentication
agent (Не удалось открыть соединение с агентом аутентификации):
exec ssh-agent bash
Совет: bash можно заменить на используемую оболочку, а затем еще раз ввести следующую команду:$ ssh-add ~/.ssh/id_rsa
-
Протестируйте протокол SSH, чтобы убедиться, что он соединяется с хоста А с хостом В без ввода пароля SSH:
Совет: Если вы отслеживаете несколько хостов, то введите следующую команду, чтобы протестировать соединение для каждого хоста:
$ ssh Id on host B@name or IP address of host B
-
Чтобы проверить соединение, введите следующую команду:
virsh -c qemu+ssh://Id on host B@name or IP address of host B:port/system
Если вы не изменяли порт SSH по умолчанию, то опустите раздел :port команды.
Важное замечание: Если команда virsh выполняется успешно, то это значит, что агент Linux KVM устанавливает соединение с гипервизором. -
Перезапустите хост А перед перезапуском агент Linux KVM на хосте А. Для перезапуска нужно еще раз ввести команду ssh-add, каждый раз указывая пароль.
Совет: Чтобы не вводить пароль повторно, используйте цепи ключей SSH.
Конфигурирование протокола TLS
Можно сконфигурировать протокол TLS для удаленного мониторинга хоста.
Об этой задаче
Процедура
-
Чтобы создать ключ и сертификат центра сертификации (certificate authority, CA) в гипервизоре, выполните следующие шаги:
- Войдите в хост B.
-
Создайте временный каталог и перейдите в этот временный каталог:
mkdir cert_files
cd cert_files
-
Создайте 2048-битный ключ RSA:
openssl genrsa -out cakey.pem 2048
-
Создайте самоподписанный сертификат для своего локального CA:
openssl req -new -x509 -days 1095 -key cakey.pem -out \
cacert.pem -sha256 -subj "/C=US/L=Austin/O=IBM/CN=my CA" -
Проверьте сертификат CA:
openssl x509 -noout -text -in cacert.pem
-
Чтобы создать ключи и сертификаты клиента и сервера в гипервизоре, выполните следующие шаги:
-
Создайте ключи:
openssl genrsa -out serverkey.pem 2048
openssl genrsa -out clientkey.pem 2048
-
Создайте требование подписи сертификата для сервера:
Напоминание: Измените адрес kvmhost.company.org, который используется в требовании сертификата сервера, на полное имя домена хоста гипервизора.
openssl req -new -key serverkey.pem -out serverkey.csr \
-subj "/C=US/O=IBM/CN=kvmhost.company.org" -
Создайте требование подписи сертификата для клиента:
openssl req -new -key clientkey.pem -out clientkey.csr \
-subj "/C=US/O=IBM/OU=virtualization/CN=root" -
Создайте сертификаты клиента и сервера:
openssl x509 -req -days 365 -in clientkey.csr -CA cacert.pem \
-CAkey cakey.pem -set_serial 1 -out clientcert.pemopenssl x509 -req -days 365 -in serverkey.csr -CA cacert.pem \
-CAkey cakey.pem -set_serial 94345 -out servercert.pem -
Проверьте ключи:
openssl rsa -noout -text -in clientkey.pem
openssl rsa -noout -text -in serverkey.pem
-
Проверьте сертификаты:
openssl x509 -noout -text -in clientcert.pem
openssl x509 -noout -text -in servercert.pem
-
Создайте ключи:
-
Чтобы распределить ключи и сертификаты на хост-сервер, выполните следующие шаги:
-
Скопируйте файл сертификата CA, cacert.pem, в каталог /etc/pki/CA:
cp cacert.pem /etc/pki/CA/cacert.pem
-
Создайте каталог /etc/pki/libvirt и скопируйте файл сертификата сервера, servercert.pem, в каталог
/etc/pki/libvirt. Убедитесь, что получить доступ к секретному ключу может только пользователь root.
mkdir /etc/pki/libvirt
cp servercert.pem /etc/pki/libvirt/.
chmod -R o-rwx /etc/pki/libvirt
Напоминание: Если ключи или сертификаты названы неправильно или скопированы в неправильные каталоги, то авторизация завершится неудачно. -
Создайте каталог /etc/pki/libvirt/private и скопируйте файл ключей сервера, serverkey.pem, в каталог
/etc/pki/libvirt/private. Убедитесь, что получить доступ к секретному ключу может только пользователь root.
mkdir /etc/pki/libvirt/private
cp serverkey.pem /etc/pki/libvirt/private/.
chmod -R o-rwx /etc/pki/libvirt/private
Напоминание: Если ключи или сертификаты названы неправильно или скопированы в неправильные каталоги, то авторизация завершится неудачно. -
Проверьте, правильно ли размещены файлы:
find /etc/pki/CA/*|xargs ls -l
ls -lR /etc/pki/libvirt
ls -lR /etc/pki/libvirt/private
Напоминание: Если ключи или сертификаты названы неправильно или скопированы в неправильные каталоги, то авторизация завершится неудачно.
-
Скопируйте файл сертификата CA, cacert.pem, в каталог /etc/pki/CA:
-
Чтобы распределить ключи и сертификаты на клиентах или на станциях управления, выполните следующие шаги:
- Войдите в хост A.
-
Скопируйте сертификат CA, cacert.pem, с хоста в каталог /etc/pki/CA на хосте A, не изменяя имя
файла.
scp kvmhost.company.org:/tmp/cacert.pem /etc/pki/CA/
-
Скопируйте файл сертификата клиента, clientcert.pem, в каталог /etc/pki/libvirt с хоста B. Используйте
имена файлов по умолчанию и убедитесь, что получить доступ к секретному ключу может только пользователь root.
mkdir /etc/pki/libvirt/
scp kvmhost.company.org:/tmp/clientcert.pem /etc/pki/libvirt/.
chmod -R o-rwx /etc/pki/libvirt
Напоминание: Если ключи или сертификаты названы неправильно или скопированы в неправильные каталоги, то авторизация завершится неудачно. -
Скопируйте ключ клиента, clientkey.pem, в каталог /etc/pki/libvirt/private с хоста. Используйте имена файлов по
умолчанию и убедитесь, что получить доступ к секретному ключу может только пользователь root.
mkdir /etc/pki/libvirt/private
scp kvmhost.company.org:/tmp/clientkey.pem /etc/pki/libvirt/private/.
chmod -R o-rwx /etc/pki/libvirt/private
Напоминание: Если ключи или сертификаты названы неправильно или скопированы в неправильные каталоги, то авторизация завершится неудачно. -
Проверьте, правильно ли размещены файлы:
ls -lR /etc/pki/libvirt
ls -lR /etc/pki/libvirt/private
-
Чтобы изменить конфигурацию демона libvirtd, выполните следующие шаги:
- Войдите в хост B.
- Создайте копии файлов /etc/sysconfig/libvirtd и /etc/libvirt/libvirtd.conf.
- Отредактируйте файл /etc/sysconfig/libvirtd и убедитесь, что параметр --listen передается демону libvirtd. Этот шаг гарантирует, что демон libvirtd будет принимать сетевые соединения.
-
Отредактируйте файл /etc/libvirt/libvirtd.conf и сконфигурируйте набор допустимых тем, используя директиву
tls_allowed_dn_list в файле libvirtd.conf.
Важное замечание: Поля в теме должны быть расположены в том же порядке, какой вы использовали для создания сертификата.
-
Перезапустите службу-демон libvirtd, чтобы изменения вступили в силу:
/etc/init.d/libvirtd restart
- Чтобы изменить конфигурацию брандмауэра, получите доступ к конфигурации на уровне защиты и добавьте порт TCP с номером 16514 в качестве доверенного (надежного) порта.
-
Чтобы убедиться, что дистанционное управление работает, введите на хосте A следующую команду:
virsh -c qemu+tls://kvmhost.company.org/system list --all
Конфигурирование протокола TCP
Используйте протокол TCP только для тестирования.
Об этой задаче
Процедура
- Войдите в хост B.
- Отредактируйте файл /etc/libvirt/libvirtd.conf и убедитесь, что параметр listen_tcp включен, а в качестве значения параметра tcp_port задано значение по умолчанию (16509).
-
Отредактируйте файл /etc/libvirt/libvirtd.conf, задав для параметра auth_tcp значение
none
. Этот шаг указывает TCP, что не нужно аутентифицировать соединение. -
Перезапустите демон libvirt на хосте B в режиме приема, запустив его с использованием флага --listen или
отредактировав файл
/etc/sysconfig/libvirtdи раскомментировав строкуLIBVIRTD_ARGS="--listen". -
Чтобы проверить соединение, введите следующую команду:
virsh -c qemu+tcp://kvmhost.company.org:port/system
Если вы не изменяли порт TCP по умолчанию, то опустите раздел :port команды.
Важное замечание: Если команда virsh выполняется успешно, то это значит, что агент Linux KVM устанавливает соединение с гипервизором.