🔑 はじめての方へ
GitHubはパスワードやサーバー情報を守ってくれる?
💡 答えは「いいえ」/むしろ何も考えずに使うと危険/正しい置き場所は環境変数・.env+.gitignore・GitHub Secretsの3つ
そもそもリポジトリとは何か
リポジトリは、ファイルとその変更履歴をまとめて入れておく「箱」です。普通のフォルダと違い、中身をいつ・誰が・どう変えたかの記録が自動で残ります。1つのプロジェクト(1つのWebサイトや1つのアプリなど)につき、通常1つのリポジトリを作ります。
GitHubはパスワードを管理してくれるの?──答えは「いいえ」
パスワードやサーバー接続情報(FTP情報、DBの接続文字列、APIキーなど)を、普通のファイルとしてリポジトリに入れてcommitしてしまうと、その情報は履歴に永久に残ります。あとから削除しても、過去のcommit履歴には残り続けます。リポジトリが公開(public)設定なら、世界中の誰でもその履歴を見られる状態になります。これはGitHubを使う上で最も多い事故パターンです。
つまりGitHubは「パスワードを安全に保管する金庫」ではなく、「入れたものをそのまま記録し続ける台帳」だと考えてください。台帳に何を書くかは、使う人が判断する必要があります。
「重要な秘密は置かない」と言われるけど、じゃあどこに置くの?
「秘密情報をリポジトリに置かない」という注意はよく聞きますが、それだけでは片手落ちです。実際には、リポジトリの外側に、安全な置き場所が3つ用意されています。
| 方法 | 仕組み | 向いている場面 |
|---|---|---|
| ①環境変数として渡す | パスワードをファイルに書かず、作業を実行する時だけ一時的な変数として渡す | コマンドライン作業、CodexやClaude Codeへの一時的な受け渡し |
| ②.envファイル+.gitignore | 秘密情報を専用ファイル(.env)にまとめ、そのファイル自体を.gitignoreでcommit対象から除外する |
ローカル開発、繰り返し使う接続情報の管理 |
| ③GitHub Secrets | GitHub側に用意された暗号化保管庫。GitHub Actions(自動処理)が実行時にだけ読み込む | 自動デプロイ、CI/CDなど、GitHub上で動く自動処理 |
共通しているのは、秘密情報を「リポジトリの中」ではなく「リポジトリの外側の、必要な時だけ読み込まれる場所」に置くという考え方です。
CodexやClaude Codeに作業を頼む時も同じ原則
AIツールにサーバー作業やデプロイ作業を頼む場合も、この原則は変わりません。パスワードやAPIキーを会話の中に直接書いたり、コードファイルに書き込ませたりせず、環境変数として一時的に渡すのが安全です。作業が終われば、その変数は残らず、ファイルにも書き込まれません。詳しくはClaude CodeでGitHubを使うでも整理しています。
「FTP情報にパスワードは書かない」と言われるけど、実際どう伝える?
サーバー作業でよく出てくるFTP接続情報(ホスト・ユーザー名・パスワード)も、考え方は同じです。AIとの会話でパスワードを伝えること自体は問題ありません。問題になるのは、そのパスワードが「ファイルに書き込まれて残ってしまう」ことです。伝え方と使われ方を分けて考えると理解しやすくなります。
安全な伝え方
- チャットで一時的に伝え、AI側がその場だけの環境変数として使う
- 作業のたびに、コマンドの直前で値を渡す(渡した値はコマンド実行後に残らない)
- 渡した値がスクリプトファイルやログに書き込まれていないか確認する
避けたい伝え方
- パスワードを`.js`や`.txt`などのファイルに直接書かせて保存する
- そのファイルをリポジトリへcommitしてしまう
- 作業ログや報告書にパスワードをそのまま貼り付ける
実際の例として、次のようにコマンドの直前で一時的に値を渡す方法があります。
export FTP_HOST=xxx.example.com
export FTP_USER=shonen
export FTP_PASS='パスワード'
node deploy.js
このコマンドを実行した後、パスワードはどのファイルにも残りません。デプロイ用のスクリプト側も、値を直接書き込むのではなく、実行時に環境変数として読み取るだけにしておきます。「AIに伝える」ことと「ファイルに書き残す」ことは別だと覚えておくと、安全な使い方が身につきます。
すでに誤って秘密情報をpushしてしまったら
- 該当のパスワード・APIキー・トークンを、提供元の管理画面からすぐに無効化・再発行する
- 「あとから削除すれば大丈夫」ではない。過去のcommit履歴に残り続けるため、値そのものを無効化するのが確実
- リポジトリが公開設定だった場合は、すでに外部から見られた可能性を前提に対応する
- 今後の再発防止として、
.gitignoreの設定を見直す
FAQ
private(非公開)リポジトリなら秘密情報を置いても大丈夫ですか?
publicよりはリスクは下がりますが、安全とは言い切れません。共同作業者や外部連携ツールに情報が渡る可能性があるため、privateでも秘密情報は置かない前提で扱うことをおすすめします。
GitHub Secretsは無料で使えますか?
基本的な利用は無料枠の範囲で使えることが多いですが、利用条件やプランごとの範囲は変更される可能性があります。最新情報はGitHub公式情報で確認してください。
.envファイルを間違えてcommitしてしまいました。どうすればいいですか?
ファイルを削除するだけでは不十分です。含まれていたパスワードやキーをすぐに無効化・再発行し、今後は.gitignoreで.envを除外する設定にしてください。
環境変数はどこで確認できますか?
OSやツールによって確認方法は異なります。コマンドラインで一時的に設定した場合は、そのセッション内でのみ有効です。詳しい設定方法は使用しているツールのドキュメントを確認してください。