GitHubで使えるoAuth2 Device Flowというものを知った話

2024-05-18(Sat) Server

目次

    ちょっと勉強になったのでメモがてらの話です。GitHubで使える認証にDevice Flowというのがあるらしい。

    たまたまGitHubの認証をしていないサーバーで、VS Codeのremoteアクセスをした上のcliで、GitHub上プライベートリポジトリをgit cloneをしたら出てきたプロンプト

    Select an authentication method for 'https://github.com/':
      1. Device code (default)
      2. Personal access token
    option (enter for default):
    To complete authentication please visit https://github.com/login/device and enter the following code:
    [code]
    

    WEBで表示されたコードをコピペして入れると認証が通る。git pull/pushなどもできる。

    Device flowというらしい。oAuth2の認証フローの1つだそうです。

    Authorizing OAuth apps - GitHub Docs

    この挙動を知らなかったので、何が理由で動いたか分かってなかったのですが、git-credential-manager(gcm)をインストールした環境で使えるらしく、そこでインスールしていたわーと思い出してました。

    gitで2要素認証を突破するためのGit Credential Managerの紹介 #Git - Qiita

    gcmを用意できた状態で認証を一時的に通したい時には便利に感じました。たとえばラズパイで一時的にアクセスしたいとか、そういう時に使えるかもしれません。

    とはいえ、認証をしたらずーっと有効かというとそうではなさそうで、数日後に再度VS Codeでアクセスした時には再度認証を求められました。ターミナルを閉じるタイミングか、一定時間経過で無効になるかは、よくわからなかったです。

    回数が少なければ再認証すればまた認証を通せますし、何度もアクセスが必要な場合はsshで鍵追加をした上でssh認証を使うと良さそうですね。