Если YaST завершает работу с XIO: fatal IO error 11 (Resource temporarily unavailable)ошибкой по SSH, сначала попробуйте обходное решение, описанное в документации SUSE для Qt: QT_XCB_GL_INTEGRATION=none yast.ssh. Для установленной системы SLES и конкретного модуля YaST используйте ту же переменную перед этим модулем, например QT_XCB_GL_INTEGRATION=none yast2 disk. Если ни одно графическое приложение не может открыться, сначала исправьте переадресацию X11: подключитесь с помощью ssh -X, убедитесь, что удаленная оболочка имеет DISPLAYзначение, и проверьте, включена ли переадресация X11 на сервере.
В руководстве по развертыванию SUSE SLES 15 SP7 описана именно эта ошибка XIO, а также обходное решение на основе Qt и альтернатива с использованием ncurses. Приведенный фрагмент относится к контексту удаленной установки, поэтому используйте его как целенаправленное решение для аналогичного поведения YaST через SSH; он не утверждает, что каждая ошибка запуска YaST имеет одну и ту же причину. Приведенные ниже проверки позволяют отличить этот случай от отсутствия локального X-сервера, отключенной переадресации SSH или проблемы с аутентификацией X.
1. Перед устранением неполадок YaST убедитесь, что переадресация X11 работает.
Переадресация X11 отправляет оконный трафик удаленного приложения через SSH на X-сервер на вашем локальном компьютере. Таким образом, на вашем локальном компьютере должен быть запущен X-сервер, а SSH-клиент должен запросить переадресацию. На рабочем столе X11 откройте новый терминал и подключитесь следующим образом:
ssh -X admin@server.example.com
Замените учетную запись и хост на свои собственные. После входа в систему выполните:
echo "$DISPLAY"
Значение, подобное localhost:10.0указанному, говорит о том, что SSH настроил переадресацию экрана. Это пример, а не фиксированное значение: номер экрана может отличаться. Если вывод пустой, выйдите из системы и подключитесь заново с помощью команды `ssh` -X. Если вывод по-прежнему пустой, проверьте настройки SSH на стороне клиента и конфигурацию сервера в следующем разделе. Не устанавливайте DISPLAYзначение вручную на основе предположений; SSH создает прокси-экран для сессии.
Пример из терминала: после установления SSH-соединения с параметром -X удаленная оболочка получает перенаправленное значение DISPLAY.
Если вы используете PuTTY в Windows, включите переадресацию X11 в настройках сеанса «Подключение > SSH > X11» и убедитесь, что локальный X-сервер запущен. Это требование указано в руководстве по развертыванию SUSE. Удаленный хост не сможет отобразить окно, если на локальной машине нет X-сервера, даже если вход по SSH прошел успешно.
2. Проверьте SSH-сервер SLES и аутентификацию X.
На хосте SLES администратор может проверить конфигурацию демона SSH:
Действующая политика сервера должна разрешать переадресацию X11 и xauthбыть доступна для передачи аутентификации. В документации SUSE X11Forwarding Yesуказано, что это настройка на стороне сервера, и отмечается, что SSH устанавливает удаленный сервер, DISPLAYкогда клиент подключается с помощью команды `ssh install` -X. Простая команда `ssh install` grepможет не учитывать настройки во включенных конфигурационных файлах или условных Matchблоках; если вывод, кажется, противоречит поведению, попросите администратора SSH проверить действующую конфигурацию, а не добавлять дублирующие строки.
Пример использования терминала: проверьте параметр sshd X11Forwarding и убедитесь, что утилита xauth доступна на хосте SLES.
Если вы внесете изменения sshd_config, проверьте файл перед перезагрузкой демона:
sudo sshd -t
sudo systemctl reload sshd
Запускайте эти команды только с правами администратора. Держите существующую SSH-сессию открытой во время тестирования новой, чтобы ошибка конфигурации не привела к блокировке доступа. Затем отключитесь и подключитесь снова; параметры переадресации согласовываются при запуске SSH-сессии. Избегайте открытия TCP-порта 6000 на сервере или использования его xhost +в качестве ярлыка. Переадресация SSH предназначена для туннелирования X-трафика и управления его аутентификацией; прямой доступ к X-серверу может сделать дисплей доступным для других машин.
3. Примените обходное решение Qt, специфичное для YaST.
Если DISPLAYпараметр установлен, и открывается другое перенаправленное X-приложение, но YaST завершается с ошибкой XIO, указанной выше, попробуйте использовать описанное в документации переопределение среды для этого конкретного запуска:
QT_XCB_GL_INTEGRATION=none yast.ssh
Для обычной установленной системы запустите необходимый модуль, а не предполагайте наличие вспомогательной программы установки. Например, в документации SUSE описана следующая форма модуля:
QT_XCB_GL_INTEGRATION=none yast2 disk
Пример использования терминала: обходной путь интеграции Qt XCB, описанный SUSE для YaST через SSH.
Эта переменная применяется только к следующей за ней команде; она не вносит постоянных изменений в настройки Qt или политику SSH. Точная yast.sshкоманда используется SUSE для своей системы установки, в то время как установленный хост SLES обычно запускает модули YaST с помощью yast2. Если не работает другой модуль, замените его документированное имя модуля на disk. Не рассматривайте эту настройку среды как решение проблемы с пустым именем DISPLAYили для клиента без X-сервера.
4. Используйте текстовый интерфейс YaST, когда окно не требуется.
Если вам нужно только выполнить администрирование и не требуется графическое окно, используйте интерфейс ncurses в терминале SSH YaST. Что касается модуля дисков, в документации SUSE указано следующее:
yast2 disk --ncurses
Вы также можете явно запросить бэкенд ncurses для модуля:
YUI_PREFERRED_BACKEND=ncurses yast2 disk
Пример использования в терминале: вызов модуля YaST disk с бэкэндом ncurses, когда переадресация графического интерфейса не требуется.
Текстовый интерфейс полностью исключает переадресацию X11 и часто является самым простым вариантом для удаленного сервера. Это по-прежнему YaST, и он по-прежнему изменяет конфигурацию системы; внимательно проверяйте изменения на диске, в разделах, брандмауэре и сети, прежде чем подтверждать их. Что касается системы установки SLES, SUSE заявляет, что YaST предоставляет интерфейс ncurses, когда локальный X-сервер недоступен.
Проверьте исправление
Откройте новую сессию SSH с помощью команды `ssh` ssh -X, убедитесь, что echo "$DISPLAY"значение `ncurses` не пустое, затем запустите YaST, используя соответствующую команду. Успех означает, что окно YaST появится на локальном рабочем столе, или модуль ncurses откроется в терминале, если вы выбрали этот бэкенд. Если переадресация работает нормально, но после переопределения Qt сохраняется точная ошибка XIO, запишите полную ошибку терминала и проверьте примечания к выпуску SLES или базу знаний службы поддержки SUSE на наличие проблемы, специфичной для данного выпуска; эта процедура не может выявить несвязанный дефект Qt или YaST только по фрагменту ошибки.