Начните с фактического ответа

Руководство относится к интерфейсу RDP в rdp-cli 0.1.0 на Windows, macOS и Linux. Оно основано на существующих проверках подключения и Agent за сентябрь 2026 года, а не на новых испытаниях серверов. Используйте разрешённый сервер Windows RDP и актуальную сборку для клиента. Примеры вызывают rdp-cli из PATH; в Windows используйте .\rdp-cli.exe из его папки, в Linux — установленную команду или скачанный исполняемый файл.

rdp-cli --version
rdp-cli list
rdp-cli status --session SESSION

Замените SESSION своим полученным ID. При отказе прочитайте error.code, error.message, error.retryable. В успешном ответе состояния проверьте data.connection_state, data.control_state, имеющийся data.last_error и data.capabilities. Признак допустимого повтора не разрешает автоматически повторять ввод.

Проверьте этапы подключения

Ошибка Проверка и действие
CONNECT_TIMEOUT / RDP_CONNECT_FAILED Проверьте хост, настроенный порт (обычно 3389), маршрут LAN/VPN и работающую службу RDP. Администратор должен проверить прослушивание и разрешающее правило межсетевого экрана. Доступный порт не доказывает успешный вход RDP. После исправления причины попробуйте один раз.
RDP_TLS_HANDSHAKE_FAILED Проверьте TLS сервера. Стандартный профиль modern требует TLS 1.2. Используйте --tls-profile legacy только для известного старого сервера в доверенной сети: он допускает старую криптографию. Не применяйте его ко всем соединениям и не отключайте защиту сервера ради теста.
CERTIFICATE_UNTRUSTED При --cert-policy strict проверьте имя сервера и цепочку сертификата либо сверяйте отпечаток SHA-256 с администратором до добавления точной записи доверия. Текущее значение по умолчанию ignore не проверяет подлинность сервера. Не переключайтесь лишь ради сокрытия ошибки strict.
AUTH_FAILED Проверьте пользователя, локальную/доменную учётную запись, --domain и право удалённого входа. Используйте скрытый ввод пароля или сохранённую ссылку из краткого руководства. Не перебирайте пароли: ошибка TLS или недоступный хост не доказывают ошибку пароля.

Соединение есть, но полезного изображения нет

Выполните запрос чтения ниже и откройте PNG из data.path. connected означает активацию RDP и получение согласованного кадра. Он может показывать вход, приветствие или чёрный экран; готовность рабочего стола не гарантируется.

rdp-cli screenshot --session SESSION

При FRAME_UNAVAILABLE проверьте состояние и error.retryable, дождитесь завершения переподключения или изменения экрана и повторите снимок. Если полученное изображение остаётся чёрным, проверьте сервер, сон клиента и VPN. У исторических случаев были разные или неустановленные причины. Не вводите учётные данные в невидимую цель и не считайте любой неподвижный кадр зависанием протокола.

Устраните ошибки ввода и прав

  • OBSERVATION_REQUIRED: получите и прочитайте новый снимок, используя его data.observation для следующего действия. Обновляйте после переподключения, передачи управления и смены экранов.
  • SESSION_PAUSED, CONTROL_HELD_BY_HUMAN или CONTROL_NOT_OWNED: остановите ввод и уважайте текущего контроллера. Продолжайте лишь после разрешённого возврата и нового снимка; не обходите паузу другим просмотрщиком.
  • PERMISSION_DENIED / CAPABILITY_UNAVAILABLE: проверьте возможность и разрешение. Просмотрщик не включает отсутствующую функцию сервера. UNICODE_INPUT_UNAVAILABLE требует поддерживаемого способа ввода, а не слепых повторов.

Проверьте действие с неизвестным результатом

Перед вводом, результат которого может потребовать проверки, задайте и сохраните уникальный --request-id для каждого отдельного действия, заменив ID из примеров своими значениями. Если получен JSON ошибки, сохраните его поле верхнего уровня request_id; если ответ полностью потерян и исходный ID не сохранён, не придумывайте новый ID для запроса старого действия и не повторяйте ввод вслепую.

При REQUEST_TIMEOUT или SERVICE_UNAVAILABLE во время действия сохраните исходный ID запроса. Проверьте локальную службу через list, затем запросите исходную операцию перед повтором. Ввод мог быть отправлен, даже если ответ потерялся.

rdp-cli operations status --session SESSION --request-id REQUEST_ID
rdp-cli status --session SESSION
rdp-cli screenshot --session SESSION

Вместо REQUEST_ID подставьте исходное значение, а не ID запроса состояния. Проверьте data.state, сохранённый data.result и свежий снимок. OPERATION_NOT_FOUND может означать истечение срока или смену службы, а не отсутствие выполнения. После исправления причины явный reconnect незакрытого сеанса оставляет его на паузе. Для SESSION_CLOSED нужно новое разрешённое подключение, а не повторные попытки оживить сеанс.

Продолжайте с нужными данными

Если проблема остаётся, сообщите версии клиента/сервера, протокол, время, код и состояние/снимок без конфиденциальных данных. Удалите пароли, токены и личное содержимое экрана. Руководство не подтверждает совместимость и длительную стабильность всех серверов.

Скачать · Краткое руководство · Справочник команд