CMDKEY — управление сохранёнными учётными данными в CMD

CMDKEY сохраняет, отображает и удаляет учётные данные для автовхода на серверы и сетевые ресурсы Windows без GUI. Полный синтаксис и практические примеры.

Команда CMDKEY управляет хранилищем учётных данных Windows (Credential Manager) из командной строки. С её помощью можно сохранить логин и пароль для удалённого сервера, сетевого диска или RDP-сессии — и больше не вводить их вручную при каждом подключении.

Синтаксис команды CMDKEY

CMDKEY [{/add | /generic}:целевой_ресурс [/user:имя_пользователя] [/pass[:пароль]] [/smartcard]]
       [/delete[:целевой_ресурс] | /delete /ras]
       [/list[:целевой_ресурс]]

Плейсхолдеры:

  • целевой_ресурс — имя сервера, IP-адрес или произвольная метка (например server01, 192.168.1.10, MicrosoftOffice).
  • имя_пользователя — UPN (user@domain.com), NetBIOS (DOMAIN\user) или локальное имя.
  • пароль — если параметр /pass указан без значения, система запросит пароль интерактивно (безопаснее, чем передавать в открытом виде).

Ключи и параметры

Ключ Описание Пример
/add:ресурс Добавляет запись для Windows-аутентификации (NTLM/Kerberos) CMDKEY /add:srv01 /user:admin /pass:P@ssw0rd
/generic:ресурс Добавляет универсальную запись (для RDP, Basic-auth, произвольных приложений) CMDKEY /generic:TERMSRV/192.168.1.5 /user:user /pass
/user:имя Имя пользователя для новой записи /user:DOMAIN\operator
/pass[:пароль] Пароль; без значения — интерактивный ввод (скрытый) /pass:Secret1 или просто /pass
/smartcard Использовать смарт-карту вместо пароля CMDKEY /add:srv02 /user:user /smartcard
/list Показать все сохранённые записи или конкретную по имени ресурса CMDKEY /list / CMDKEY /list:srv01
/delete:ресурс Удалить запись для указанного ресурса CMDKEY /delete:srv01
/delete /ras Удалить все записи RAS/VPN-подключений CMDKEY /delete /ras

Примеры использования

Сохранить учётные данные для сетевого диска

Нужно подключить \\fileserver\share без запроса пароля каждый раз при входе в систему.

CMDKEY /add:fileserver /user:DOMAIN\svc_backup /pass:BackupPass1

После этого команда net use Z: \\fileserver\share подключится без диалога аутентификации.

Сохранить данные для RDP без указания пароля в открытом виде

Для удалённого рабочего стола нужен тип /generic с префиксом TERMSRV/. Чтобы не светить пароль в истории команд, используйте /pass без значения.

CMDKEY /generic:TERMSRV/192.168.10.5 /user:admin /pass

Система запросит пароль в защищённом диалоге. После этого mstsc /v:192.168.10.5 откроется без запроса учётных данных.

Просмотреть все сохранённые учётные записи

Полезно перед деплоем скрипта убедиться, что нужные записи уже есть в хранилище.

CMDKEY /list

Команда выведет список: тип записи (Generic/Windows), целевой ресурс и имя пользователя. Пароли не отображаются.

Удалить устаревшую запись

Сервер переименован или пароль изменился — старую запись нужно удалить перед добавлением новой.

CMDKEY /delete:fileserver

Запись исчезнет из Credential Manager; следующее обращение к ресурсу снова потребует аутентификации.

Использование в скрипте развёртывания

При автоматической настройке рабочих станций можно заранее прописать учётные данные, чтобы последующие шаги скрипта работали без интерактивного ввода.

@echo off
CMDKEY /add:deploysrv /user:deploy_svc /pass:%DEPLOY_PASS%
net use S: \\deploysrv\scripts /persistent:no
call S:\setup.cmd
CMDKEY /delete:deploysrv

Пароль передаётся через переменную окружения DEPLOY_PASS, а после завершения развёртывания запись удаляется — хорошая практика безопасности.

Массовое удаление RAS/VPN записей

На компьютере накопилось множество устаревших VPN-профилей — одной командой удалить все.

CMDKEY /delete /ras

Все записи типа RAS удаляются из хранилища немедленно.

Частые ошибки и решения

Ошибка / симптом Причина Решение
RDP всё равно запрашивает пароль несмотря на /add Для RDP нужен тип /generic с префиксом TERMSRV/, а не /add CMDKEY /generic:TERMSRV/имя_сервера /user:... /pass:...
«Целевой объект не найден» при /delete Имя ресурса указано не точно так, как оно сохранено Сначала CMDKEY /list — скопировать точное имя из вывода, затем удалять
Пароль с пробелами или спецсимволами не сохраняется CMD разбивает строку по пробелам Заключить значение пароля в кавычки: /pass:"Мой Пароль#1"
Запись создаётся, но net use продолжает запрашивать пароль Имя сервера в CMDKEY не совпадает с тем, что использует net use (FQDN vs NetBIOS) Добавить запись под обоими именами: CMDKEY /add:srv01 и CMDKEY /add:srv01.domain.local
CMDKEY выдаёт ошибку «Отказано в доступе» При добавлении корпоративных учётных данных требуется профиль с правами записи в хранилище Запустить CMD от имени пользователя (не SYSTEM), под чьим профилем нужно хранить запись

Когда применять, а когда нет

CMDKEY незаменима в скриптах автоматизации, где требуется подключение к сетевым ресурсам без GUI: развёртывание ПО, резервное копирование, плановые задачи в Task Scheduler. Команда работает в Windows 7 и новее, права администратора не нужны — каждый пользователь управляет своим хранилищем.

Не используйте CMDKEY для хранения паролей привилегированных учётных записей на серверах общего пользования: записи в Credential Manager привязаны к профилю, но любой, кто имеет физический или RDP-доступ к сессии, может их использовать. Для машин с общим доступом рассмотрите Windows Credential Guard или хранилище секретов вроде HashiCorp Vault.

Аналог в PowerShell: Get-StoredCredential / New-StoredCredential из модуля CredentialManager (устанавливается через Install-Module CredentialManager), либо нативный [System.Net.NetworkCredential] для передачи учётных данных в скрипте.

FAQ

Можно ли просмотреть сохранённый пароль через CMDKEY?

Нет. Команда CMDKEY /list показывает только тип записи, имя ресурса и пользователя. Пароль из хранилища можно извлечь только программно через Windows Data Protection API (DPAPI), и только под тем же пользователем, который его сохранил.

CMDKEY хранит пароли безопасно?

Пароли шифруются через DPAPI с ключом, привязанным к учётной записи Windows. Это достаточный уровень защиты для рабочих станций. На скомпрометированной машине под правами того же пользователя данные могут быть извлечены инструментами вроде Mimikatz.

Работает ли CMDKEY в скриптах, запущенных через Task Scheduler?

Да, если задача запускается от имени пользователя, а не учётной записи SYSTEM или службы. Записи в Credential Manager привязаны к конкретному профилю Windows.

Как сохранить пароль для подключения к принтеру по сети?

Используйте CMDKEY /add:имя_принтера_или_IP /user:DOMAIN\user /pass:пароль, затем net use \\printserver или установите принтер через rundll32 printui.dll,PrintUIEntry.

Можно ли использовать CMDKEY для OAuth или токенов?

Нет. CMDKEY работает только с парами логин/пароль и смарт-картами. Для токенов и OAuth используйте специализированные менеджеры учётных данных или хранилища секретов.

Оцените статью
( Пока оценок нет )
MW10
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.