Начните с фактического ответа
Руководство относится к интерфейсу 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 нужно новое разрешённое подключение, а не повторные попытки оживить сеанс.
Продолжайте с нужными данными
Если проблема остаётся, сообщите версии клиента/сервера, протокол, время, код и состояние/снимок без конфиденциальных данных. Удалите пароли, токены и личное содержимое экрана. Руководство не подтверждает совместимость и длительную стабильность всех серверов.