Windows資格情報をコマンドで確認・削除するcmdkeyの使い方

Windowsで共有フォルダーやリモートデスクトップ、Gitリポジトリ(GitHubなど)へ接続する際、入力したユーザー名やパスワードは「Windows資格情報」としてOS内に安全に保存されます。

通常、これらの資格情報はコントロールパネルの「資格情報マネージャー」からGUIで確認・削除することが一般的です。しかし、日常的にターミナルで作業するエンジニアやシステム管理者にとっては、マウスで何階層も画面をクリックして探す操作は手間に感じられることがあります。また、認証トラブル発生時の切り分けや、複数台のPC設定をスクリプトで自動化したいケースでは、コマンドラインから直接操作できる手段が欠かせません。

そのような場面で非常に役立つのが、Windowsに標準搭載されているコマンドラインツール「cmdkey」です。cmdkeyを使えば、コマンドプロンプトやPowerShellから保存済み資格情報の一覧表示、特定ターゲットの検索、新しい資格情報の追加、不要になった情報の削除までを素早く実行できます。

この記事では、cmdkeyの基本的な使い方から実務で頻出する活用テクニック、コマンド実行時に注意すべきセキュリティ上の留意点までを詳しく解説します。

この記事で行うこと

  • cmdkeyコマンドの役割と基本構文の確認
  • 保存されている資格情報の一覧表示(cmdkey /list
  • findstrやPowerShellを活用した特定資格情報の検索テクニック
  • 汎用資格情報およびドメイン資格情報の新規登録(cmdkey /generic, /add)
  • 不要になった資格情報の削除手順(cmdkey /delete
  • 実務での具体的な活用例(Git認証情報のリセット、リモートデスクトップ接続の自動化)
  • コマンド履歴にパスワードを残さないためのセキュリティ注意点

前提条件・対象読者

対象読者:

  • Windowsでネットワーク共有やGitの認証トラブルをコマンドラインで迅速に解決したい方
  • バッチファイルやPowerShellスクリプトを用いて資格情報の登録や削除を自動化したいエンジニア
  • コントロールパネルの資格情報マネージャーを開く手間を省き、ターミナル作業を効率化したい方

検証環境:

  • OS: Windows 11 Pro(24H2 / 23H2)および Windows 10
  • シェル: コマンドプロンプト(cmd.exe)、Windows PowerShell 5.1、PowerShell 7.x
  • 必要権限: 一般ユーザー権限で自身の資格情報の確認・追加・削除が可能です(管理者権限への昇格は基本的に不要です)。

cmdkeyのよく使う主要コマンド一覧(確認・追加・削除)

日常の作業でよく使うcmdkeyの基本コマンドを一覧表にまとめました。作業内容に応じて適切なオプションを選択してください。

操作内容実行コマンド例概要・補足
資格情報の一覧表示cmdkey /list現在ログオン中のユーザーに保存されている全資格情報を表示
特定ターゲットの確認cmdkey /list:ターゲット名指定したターゲット名の資格情報のみを抽出して表示
汎用資格情報の追加(推奨)cmdkey /generic:ターゲット名 /user:ユーザー名 /passパスワードを対話プロンプトで入力(コマンド履歴に残らない安全な方法)
汎用資格情報の追加(ワンライナー)cmdkey /generic:ターゲット名 /user:ユーザー名 /pass:パスワードパスワードを直接指定して登録(バッチ等の自動化向け)
ドメイン資格情報の追加cmdkey /add:サーバー名 /user:ドメイン\ユーザー名 /passWindows共有フォルダーやActive Directory向けに登録
資格情報の削除cmdkey /delete:ターゲット名不要になった指定ターゲットの資格情報を削除
RAS資格情報の削除cmdkey /delete /ras保存されているリモートアクセス資格情報をすべて削除

保存されている資格情報を一覧表示する(cmdkey /list)

現在ログオンしているユーザー環境に保存されているすべての資格情報を確認するには、コマンドプロンプトまたはPowerShellを開き、以下のコマンドを実行します。

cmdkey /list

コマンドを実行すると、以下のように登録されている資格情報が順番に出力されます。

現在保存されている資格情報:

    ターゲット: Domain:target=192.168.1.100
    種類: ドメイン パスワード
    ユーザー: admin
    ローカル コンピューターの永続性
    
    ターゲット: LegacyGeneric:target=git:https://github.com
    種類: 汎用
    ユーザー: octocat
    ローカル コンピューターの永続性

表示される各項目の意味は次の通りです。

  • ターゲット(Target): 資格情報が紐づいている接続先サーバー名、IPアドレス、またはアプリケーション固有の識別子です。
  • 種類(Type): 資格情報の種別です。「ドメイン パスワード(Windows資格情報)」や「汎用(Generic)」などが表示されます。
  • ユーザー(User): 接続時に使用されるユーザーアカウント名です。
  • 永続性(Persistence): 資格情報が保持される期間です。「ローカル コンピューターの永続性(再起動後も保持)」や「ログオン セッション(ログアウト時に消去)」などがあります。

セキュリティ上の保護仕様として、パスワード文字列そのものはcmdkeyの画面上には一切表示されません。資格情報が存在するかどうか、および紐づくユーザー名とターゲット名を確認する用途で使用します。

もし確認したいターゲット名があらかじめ分かっている場合は、コロン(:)に続けてターゲット名を指定することで、ピンポイントに表示させることも可能です。

cmdkey /list:git:https://github.com

特定の資格情報を検索・確認するテクニック(findstrとの組み合わせ)

長く使い続けているWindows環境では、さまざまなアプリケーションが資格情報を登録するため、cmdkey /list を実行すると何十件もの情報が一気に流れてしまい、目的の項目を見落としがちになります。

このような場合は、文字列検索コマンドとパイプで組み合わせることで、必要な情報だけを素早く絞り込めます。

コマンドプロンプトの場合(findstrコマンド)

ターゲット名の一覧だけをざっくり確認したい場合は、findstr で「Target」または「ターゲット」の行を抽出します。英語環境と日本語環境の両方に対応できるよう、大文字小文字を区別しない /i オプションを指定するのが便利です。

cmdkey /list | findstr /i "Target ターゲット"

特定のキーワード(例えば「git」や「192.168」など)を含む資格情報だけを調べたい場合は、次のように実行します。

cmdkey /list | findstr /i "git"

PowerShellの場合(Select-Stringコマンド)

PowerShellを利用している環境であれば、Select-String コマンドレットをパイプで繋ぐとスマートに検索できます。

cmdkey /list | Select-String "git"

前後数行のコンテキスト(ユーザー名や種類など)もあわせて確認したい場合は、-Context オプションを併用すると確認がスムーズになります。

cmdkey /list | Select-String "git" -Context 0,2

このコマンドにより、一致した行の下2行(種類やユーザー名)までをまとめて把握できます。

新しい資格情報をコマンドで登録・追加する(cmdkey /generic /user /pass)

cmdkeyを使用すると、GUIの画面を開くことなく、コマンドラインから新しい資格情報を直接保存できます。

資格情報には大きく分けて「汎用資格情報(Generic)」と「ドメイン資格情報(Domain)」の2つの形式があります。接続先の用途に応じて使い分ける必要があります。

汎用資格情報を追加する場合(Webサービス・Git・独自アプリ向け)

GitHubなどの外部Webサービス、APIクライアント、サードパーティ製ツール向けの認証情報は、/generic オプションを使って登録します。

安全性を考慮した場合、パスワードをコマンドラインに直接入力せず、対話プロンプトで入力する方法が強く推奨されます。/pass の後ろにパスワードを付けずに実行すると、パスワードの入力プロンプトが表示されます。

cmdkey /generic:git:https://github.com /user:snowsystem /pass

実行すると パスワードを入力してください: というプロンプトが表示され、入力した文字列は画面上に伏せられた状態で安全に保存されます。

バッチファイルやスクリプトなどで完全に自動化したい場合は、以下のようにコロンに続けて直接パスワードを記述することも可能です。

cmdkey /generic:git:https://github.com /user:snowsystem /pass:MySecretPassword123

ドメイン資格情報を追加する場合(Windowsファイル共有・AD向け)

社内LANのファイルサーバー(NASや共有フォルダー)やActive Directoryドメインにアクセスするための資格情報は、/add オプションを使用します。

cmdkey /add:FileServer01 /user:CORP\yamada /pass

IPアドレスを指定してファイル共有サーバーの認証情報を保存することも可能です。

cmdkey /add:192.168.11.50 /user:Administrator /pass

登録が正常に完了すると、画面に「CMDKEY: 資格情報を正常に追加しました。」と表示されます。

不要になった資格情報を削除する(cmdkey /delete)

アカウントのパスワードを変更した際や、古い接続先の設定が残って認証エラーの原因になっている場合は、不要な資格情報を削除します。

指定した資格情報を削除する基本手順

資格情報を削除するには、/delete オプションに対象のターゲット名を指定して実行します。

cmdkey /delete:FileServer01

ターゲット名にコロンやスラッシュ、URLなどの記号が含まれている場合(Gitの認証情報など)は、ターゲット名全体をダブルクォーテーションで囲んで実行すると構文エラーを防ぐことができます。

cmdkey /delete:"git:https://github.com"

削除に成功すると、以下のようなメッセージが表示されます。

CMDKEY: 資格情報を正常に削除しました。

もし存在しないターゲット名を指定した場合は、「CMDKEY: 指定された要素が見つかりません。」というエラーが出力されます。誤削除を防ぐためにも、事前に cmdkey /list で正確なターゲット名を確認してから実行してください。

リモートアクセス資格情報をまとめて削除する場合

VPNやダイヤルアップ接続などで保存されたリモートアクセス(RAS)関連の資格情報を一括で初期化したい場合は、/ras スイッチを使用します。

cmdkey /delete /ras

実務での活用例(Gitの認証情報リセット、リモートデスクトップ自動接続設定)

cmdkeyは、実務の現場で起きる様々なトラブル解決や効率化に応用できます。ここでは代表的な2つの活用シーンを紹介します。

活用例1:Gitの認証情報(GitHub PAT等)をリセットして再認証する

GitHubでPersonal Access Token(パーソナルアクセストークン)の有効期限が切れたり、所属組織のアカウントを切り替えたりした際、ローカルのGit操作で「Authentication failed」や「403 Forbidden」といったエラーが解消しなくなることがあります。

WindowsのGitでは「Git Credential Manager」がWindows資格情報にトークンを自動キャッシュするため、古い資格情報が残っていると何度プッシュを試みても認証に失敗してしまいます。

このような場合、cmdkeyを使ってキャッシュを削除するのが最も確実な対処法です。

手順1:保存されているGit関連の資格情報名を確認する

cmdkey /list | findstr /i "github"

手順2:該当する資格情報を削除する

cmdkey /delete:"git:https://github.com"

手順3:Git操作を実行して再認証する 再度 git push や git fetch を実行すると、ブラウザによるサインインまたは最新のアクセストークンの入力画面が自動的に立ち上がり、最新の認証情報でキャッシュが再生成されます。

活用例2:リモートデスクトップ(RDP)の自動接続設定

開発検証用サーバーや社内PCへリモートデスクトップ接続する際、毎回パスワードを入力するのは非効率です。cmdkeyを使って事前に認証情報を登録しておくことで、パスワード入力を完全にスキップできます。

リモートデスクトップの資格情報をcmdkeyで登録する場合、ターゲット名には接頭辞として TERMSRV/ を付与するのがポイントです。

手順1:リモートデスクトップ用の資格情報を登録する

cmdkey /generic:TERMSRV/192.168.1.50 /user:Administrator /pass:ServerPassword2026

ホスト名で接続する場合は、IPアドレスの部分をホスト名に置き換えて登録します。

cmdkey /generic:TERMSRV/dev-server.local /user:Administrator /pass:ServerPassword2026

手順2:リモートデスクトップ接続を起動する

mstsc /v:192.168.1.50

このコマンドを実行すると、資格情報が自動的に適用され、パスワード入力ダイアログを挟むことなく一瞬でデスクトップ画面が開きます。日常的に複数の検証サーバーへアクセスするエンジニアにとって、作業効率を大幅に引き上げるテクニックです。

cmdkey使用時のセキュリティ注意点(履歴に残るパスワードの取り扱い)

cmdkeyは非常に強力で便利なツールですが、コマンドラインでパスワードを扱う性質上、セキュリティに関して十分な配慮が必要です。特に以下の3点には注意してください。

1. シェルの実行履歴ファイルに平文パスワードが残るリスク

コマンドライン上で /pass:パスワード文字列 を直接指定して実行すると、使用しているシェルのコマンド履歴ファイルにパスワードが平文のまま記録されてしまいます。

例えば、PowerShell環境では「PSReadLine」機能により、実行したすべてのコマンドが以下のテキストファイルへ自動的に保存されます。

C:\Users\[ユーザー名]\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt

この履歴ファイルを見れば、過去に実行したコマンドラインの引数が誰でも確認できてしまいます。

対策:

  • 手動でコマンドを実行する際は、/pass のみを入力してEnterを押し、対話プロンプトからパスワードを入力する運用を徹底してください。
  • もし誤って平文でパスワードを入力してしまった場合は、上記の ConsoleHost_history.txt をテキストエディタで開き、該当の行を速やかに手動削除してください。

2. プロセス監視やセキュリティ監査ログによる露出

Windowsのセキュリティ監査(プロセス作成の監査、イベントID 4688)が有効化されている環境や、EDR(Endpoint Detection and Response)製品が稼働している端末では、コマンドラインの引数がすべてログとしてサーバーに送信・蓄積される場合があります。

バッチファイル等で自動化する場合であっても、スクリプト内に平文パスワードをハードコードすることは避け、セキュアな認証基盤や環境変数の活用を検討してください。

3. 一般権限で登録された資格情報のスコープ

cmdkeyで追加した資格情報は、基本的に現在ログオンしているユーザープロファイルに紐づきます。他の一般ユーザーから勝手に参照される心配はありませんが、PCが共有端末である場合や、複数人で同一のアカウントを利用している環境では、意図しない資格情報の利用や上書きが発生するリスクがあります。

共用端末での作業が完了した後は、必ず cmdkey /delete を実行して作成した資格情報をクリーンアップする習慣をつけましょう。

次に読むおすすめ記事

Windowsの各種ライセンスやプロダクトキーをコマンドで確認したい方は、以下の記事もあわせて参考にしてください。

WSL2とDockerを使ったWindows開発環境の構築手順や高速化設定、トラブル解決を体系的に学びたい方は、以下の完全ガイドもあわせて参考にしてください。

WSL2+Dockerで作るWindows開発環境構築まとめ
WindowsマシンでWeb開発やバックエンド開発、AIアプリ開発を行う際、いまや欠かせない標準構成となったのが「Windows + WSL2 + Docker + VS Code」の組み合わせです。かつては「Web開発といえばMac一択」…

参考情報