【非エンジニアが挑む】GitHubのPersonal Access Tokenでハマった話|VPSからのgit clone認証

【非エンジニアが挑む】GitHubのPersonal Access Tokenでハマった話|VPSからのgit clone認証の構成

前回の記事

今回は、GitHubとVPSの連携編です。

Tomoya

まず、ローカルにあったチェスのフォルダをGitHubにリポジトリとして登録します。

これはローカル開発ではよくある流れなので、初めての方は覚えておいて損はありません。
すでに知っている方は、復習のつもりで読んでもらえればと思います。

git init
git add .
git commit -m "VPSデプロイ準備:観戦モード実装"
git remote add origin GitHubで発行されたリポジトリのURL
git branch -M main
git push -u origin main
GitHubのリポジトリURLを取得し、ターミナルでgit remote add originおよびgit pushコマンドを実行する手順
GitHub上で発行されたリポジトリURLをコピーし、ローカルのターミナルからリモートリポジトリの追加とプッシュを実行します。
GitHub上のリポジトリ「VPS_chess」にコードが正常にプッシュされファイル一覧が表示されている画面
GitHubのリポジトリ「VPS_chess」へローカルの変更が正常にプッシュされ、プロジェクトのファイル群が一覧表示されている状態です。

その後、VPS側からGitHubに接続し、GitHub上に上げたチェスシステムをVPSにclone(コピー)して使っていく、という流れです。

Tomoya

この過程で大きなつまずきがあったので、正直に共有していきます!

これは誰もが通りやすい壁だと思うので、焦らず、途中で投げ出さずに読んでみてください。


目次

なぜGitHubのパスワードではログインできないのか

VPSからGitHubのリポジトリを取ってこようとすると、セキュリティ上、認証を通す必要があります。

Tomoya

てっきり、いつも使っているGitHubのユーザー名とログインパスワードを入力すればいいだけだと思っていました。

git clone GitHubのリポジトリURL VPS_chess

ところが、いつも使っているGitHubのパスワードを入力してもエラーになり、最初はかなり焦りました。実は今のGitHubは、こうしたコマンド経由での操作に対して、通常のログインパスワードでの認証をセキュリティ上の理由で受け付けなくなっているのです。

GitHubのリポジトリ画面でCodeボタンを開きHTTPSのクローン用URLを取得・コピーする手順
リポジトリページの「Code」ボタンから「Clone」タブを開き、HTTPS形式のリポジトリURLをコピーする手順です。

代わりに必要になるのが、Personal Access Token(個人アクセストークン)という、パスワードとは別に発行する専用の【鍵】でした。

Tomoya

これを知らずにパスワードを入力し続けてエラーになっていた時は、本当に頭が真っ白になりました。


Personal Access Tokenとは何か

つまり、GitHubのログインパスワードとは別に、リポジトリにアクセスするための鍵を新しく発行する必要がある、ということです。

Tomoya

これを初めて知った時は、正直かなり心が折れそうになりました。

非エンジニアからすると、「パスワード」はよく知っている存在でも、「トークン」という言葉には馴染みがありません。難しく感じてしまいがちですが、まずはシンプルに「リポジトリにアクセスするための、パスワードとは別の鍵」だと理解することが大事だと思います。

さらにGitHubには、このトークンが2種類存在することも、最初の戸惑いに拍車をかけました。ここはAIにわかりやすく整理してもらうことで、それぞれの違いと、自分がどちらを選ぶべきかを判断することができました。


Fine-grained tokenを選んだ理由

Classic token

自分の持っているリポジトリすべてにアクセスできる、いわば「万能な鍵」です。

Fine-grained token

選択した特定のリポジトリだけに絞って権限を発行できる鍵です。

これまでのSSH鍵やAPIキーの経験から学んだ「必要最小限の権限にしておく」という考え方が、ここでもそのまま活きることに気づき、少し嬉しくなりました。

GitHubのPersonal access tokens画面でGenerate new tokenを押しGitHub Mobileで2FA認証を行う手順
GitHubのDeveloper SettingsからFine-grained tokensの新規作成を選択し、GitHub Mobile等の2段階認証を実行する手順です。

実際にトークンを発行してみて

Tomoya

確かにClassic tokenの方がシンプルで発行しやすいのですが、Fine-grainedでもそこまで難しくなく発行できました。

  • Token name:分かりやすい名前をつける
  • Expiration(有効期限):無期限は避け、期限を設定する。(私は90日を選択)
  • Repository access:「Only select repositories」を選び、今回のVPS_chessのリポジトリだけにチェックを入れる
  • Permissions(許可):「Repository permissions」の中の「Contents」を、【Read-only(読み取り専用)】に設定する
GitHubのFine-grained personal access token作成画面でトークン名・対象リポジトリ・権限を設定する手順
Fine-grained personal access tokenの作成画面にて、対象リポジトリの絞り込みやコンテンツ権限の個別設定を行います。

初めてのうちは、範囲を広く取っておいた方が使いやすい場面もあると思います。ただ今回は「VPSにこのチェスシステムだけをクローンする」という明確な目的があったので、Fine-grainedの方が明らかに適していると判断できたのは、選択する上で良い経験になりました。

権限やスコープという言葉自体、あまり聞き馴染みがなく何を選べばいいのか迷いましたが、今回はVPSにリポジトリをクローンするだけなので、Read-onlyを選択しました。

ここは思っていたよりスムーズに進められました。


VPS側で実際に使ってみる

GitHubのPersonal Access Token生成時に表示される「このトークンは二度と表示されません!」という警告画面
個人用アクセストークン(PAT)の発行直後に表示される警告画面で、一度閉じると再表示できないためコピーして保管する必要があります。

発行したトークンは「二度と表示されない」と言われました。少し緊張する瞬間ですが、今後もいろいろな鍵を発行する場面でこの感覚には慣れていくのだと思います。ただ、これを忘れてしまうと再発行の手間がかかるので、なるべく忘れないよう、自分だけの環境でしっかり管理するようにしています。

git clone GitHubのリポジトリURL VPS_chess
  • Username:GitHubのユーザー名
  • Password:(GitHubのパスワードではなく)発行したトークンをそのまま貼り付け

VPS側でパスワード欄にトークンを貼り付けると、さきほどのつまずきの時と同じように、画面には何も表示されません。

Tomoya

これがまた不安を掻き立てるのですが、

今回は「トークンを発行して、それを正しく貼り付けた」という確信があったので、臆することなくEnterを押しました。

無事にcloneは成功しました。


つまずいた点・率直な感想

ローカルPC→GitHub→VPSという連携の流れ自体は、やることは明確でシンプルです。

ただ、外部のサービス同士を連携させる以上、セキュリティをクリアにしていく手間は必ずかかってくるのだと実感しました。

今回のトークン認証は、まさにその典型で、これから同じ道を通る非エンジニアの方も、きっと同じところでつまずくだろうと思います。この記事を読んで、意味を理解した上でクリアにしていってもらえたら嬉しいです。

そして何より伝えたいのは、こういう場面でこそAIを頼ってほしい、ということです。読んでもらえること自体もありがたいのですが、ちょっとした壁でつまずいて挫折してしまうより、AIを使ってその場で疑問を解消し、次に進めることの方がずっと大事だと思っています。


まとめ・次回予告

次は、VPS上でこのチェスシステムを動かすための環境構築・デプロイに進んでいきます。

次回予告VPS環境構築・デプロイ編「VPSをイチから構築!コードをデプロイ!ついに動作確認!」の案内
Tomoya

VPSに興味を持った方にはXserver VPSがおすすめですし、開発を進めるならCursorを使うのがおすすめです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

始めまして。このブログを運営するTomoyaです。
未経験個人開発者。AI×個人開発(Vibe Cording)で学習して参入してくれる人が増えて広がっていくと良いなと思って始めました。

実際に作成→デプロイ(公開)→運営を行ってそれについての問題や疑問を記録していきます。
また行っていく上で内容(セキュリティ・制限など)にもこだわっていきたいなと思っています。

コメント

コメントする

目次