
Windowsで共有フォルダーやリモートデスクトップ、Gitリポジトリ(GitHubなど)へ接続する際、入力したユーザー名やパスワードは「Windows資格情報」としてOS内に安全に保存されます。
通常、これらの資格情報はコントロールパネルの「資格情報マネージャー」からGUIで確認・削除することが一般的です。しかし、日常的にターミナルで作業するエンジニアやシステム管理者にとっては、マウスで何階層も画面をクリックして探す操作は手間に感じられることがあります。また、認証トラブル発生時の切り分けや、複数台のPC設定をスクリプトで自動化したいケースでは、コマンドラインから直接操作できる手段が欠かせません。
そのような場面で非常に役立つのが、Windowsに標準搭載されているコマンドラインツール「cmdkey」です。cmdkeyを使えば、コマンドプロンプトやPowerShellから保存済み資格情報の一覧表示、特定ターゲットの検索、新しい資格情報の追加、不要になった情報の削除までを素早く実行できます。
この記事では、cmdkeyの基本的な使い方から実務で頻出する活用テクニック、コマンド実行時に注意すべきセキュリティ上の留意点までを詳しく解説します。
この記事で行うこと
前提条件・対象読者
対象読者:
検証環境:
cmdkeyのよく使う主要コマンド一覧(確認・追加・削除)
日常の作業でよく使うcmdkeyの基本コマンドを一覧表にまとめました。作業内容に応じて適切なオプションを選択してください。
| 操作内容 | 実行コマンド例 | 概要・補足 |
|---|---|---|
| 資格情報の一覧表示 | cmdkey /list | 現在ログオン中のユーザーに保存されている全資格情報を表示 |
| 特定ターゲットの確認 | cmdkey /list:ターゲット名 | 指定したターゲット名の資格情報のみを抽出して表示 |
| 汎用資格情報の追加(推奨) | cmdkey /generic:ターゲット名 /user:ユーザー名 /pass | パスワードを対話プロンプトで入力(コマンド履歴に残らない安全な方法) |
| 汎用資格情報の追加(ワンライナー) | cmdkey /generic:ターゲット名 /user:ユーザー名 /pass:パスワード | パスワードを直接指定して登録(バッチ等の自動化向け) |
| ドメイン資格情報の追加 | cmdkey /add:サーバー名 /user:ドメイン\ユーザー名 /pass | Windows共有フォルダーや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
この履歴ファイルを見れば、過去に実行したコマンドラインの引数が誰でも確認できてしまいます。
対策:
2. プロセス監視やセキュリティ監査ログによる露出
Windowsのセキュリティ監査(プロセス作成の監査、イベントID 4688)が有効化されている環境や、EDR(Endpoint Detection and Response)製品が稼働している端末では、コマンドラインの引数がすべてログとしてサーバーに送信・蓄積される場合があります。
バッチファイル等で自動化する場合であっても、スクリプト内に平文パスワードをハードコードすることは避け、セキュアな認証基盤や環境変数の活用を検討してください。
3. 一般権限で登録された資格情報のスコープ
cmdkeyで追加した資格情報は、基本的に現在ログオンしているユーザープロファイルに紐づきます。他の一般ユーザーから勝手に参照される心配はありませんが、PCが共有端末である場合や、複数人で同一のアカウントを利用している環境では、意図しない資格情報の利用や上書きが発生するリスクがあります。
共用端末での作業が完了した後は、必ず cmdkey /delete を実行して作成した資格情報をクリーンアップする習慣をつけましょう。
次に読むおすすめ記事
Windowsの各種ライセンスやプロダクトキーをコマンドで確認したい方は、以下の記事もあわせて参考にしてください。
WSL2とDockerを使ったWindows開発環境の構築手順や高速化設定、トラブル解決を体系的に学びたい方は、以下の完全ガイドもあわせて参考にしてください。


