仕事用と個人用のGitHubアカウントを併用する方法

Visual StudioのCopilotに個人用のGitHubアカウントを設定すると、リモートリポジトリの認証に影響してしまう困った症状が発生したため、SSH Keyを使ってマルチアカウント対応する方法についての備忘録。


問題

管理された仕事用のGitHubアカウントをPersonal Access Tokenで利用している環境でVisual StudioのCopilotに個人用のGitHubアカウントを設定すると、リモートリポジトリの認証で仕事用のアカウントが利用できなくなってしまう。
(Visual StudioだけでなくGit ExtensionsやTortoiseGitでも同様の状態になる。)

業務にAIを利用する際は、データのプライバシーやセキュリティ、および知的財産権の観点から、AI利用に関するクライアントの事前了承を得ておくことが必要です。機密情報の扱いに細心の注意を払うだけでなく、AIが生成した成果物が第三者の知的財産権を侵害するリスクも充分に考慮して慎重に利用する必要があります。


原因

Gitの認証にOS管理の資格情報を利用しているため、Visual StudioのCopilot設定で個人用のGitHubアカウントを登録すると、その資格情報が使用されてしまう。


対応

Git認証でPersonal Access TokenではなくSSHキーを利用する。

GitHubでSSH を利用する手順

  1. Windows上で仕事用のリポジトリにアクセスするためのSSHキーを作成する。

    ssh-keygen -t rsa -b 4096 -C "email_for_work@example.com"

    email_for_work@example.com部分は作成したキーを識別できる任意の文字列

    Generating public/private rsa key pair.
    Enter file in which to save the key (C:\Users\UserName/.ssh/id_rsa):

    のようにSSHキーの保存先を聞かれるので

    C:\Users\UserName\.ssh\id_rsa_github-for-work

    など、自分でキーを識別できる名称で保存する。

    続いて

    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:

    のようにパスフレーズを聞かれるので、セキュリティを高めたい場合はパスフレーズを設定します(省略可)。

    パスフレーズを設定する場合は、このキーを利用するときにパスフレーズが必要になります。パスフレーズは安全かつ確実な方法で保管してください。

    パスフレーズの入力が終わると

    Your identification has been saved in C:\Users\UserName\.ssh\id_rsa_github-for-work.
    Your public key has been saved in C:\Users\UserName\.ssh\id_rsa_github-for-work.pub.
    The key fingerprint is:
    SHA256:S19y6udQIYHCW****************VO0suyhXFDrgoM email_for_work@example.com
    The key's randomart image is:
    +---[RSA 4096]----+
    |     . oo++.o    |
    |      = o..* o   |
    |     . + o+ * .  |
    |    . o o .= o   |
    | . . + *S.o +    |
    |E o . @..oo*     |
    |   o * o.++.     |
    |    o .  .+..    |
    |         ..o.    |
    +----[SHA256]-----+

    のような表示が行われC:\Users\UserName\.ssh配下にid_rsa_github-for-workid_rsa_github-for-work.pubが出力される。

  2. SSHクライアントの設定を行う。
    C:\Users\UserName\.ssh\configファイルを作成し、以下内容で登録する。複数のアカウントを使い分けたい場合はアカウント毎にHostIdentityFileを登録する。

    Host github-for-work
     HostName github.com
     User git
     IdentityFile C:/Users/UserName/.ssh/id_rsa_github-for-work
  3. GitHubにSSHキーを登録する。

    1. GitHubにログインし、右上のプロフィールアイコンからSettingsSSH and GPG keysを選択する。
    2. New SSH keyボタンをクリックする。
    3. C:\Users\UserName\.ssh\id_rsa_github-for-work.pubファイルの内容をコピーし、Key欄にペーストする。
    4. Title欄に識別しやすい名前を入力しAdd SSH keyボタンを押して登録する。
      file
  4. ローカルリポジトリにSSHキーをセットする。
    コンソールでリポジトリのディレクトリに移動し、以下のコマンドでリモートリポジトリを設定する。
    username/repo.git部分はアクセスするリポジトリに置き換えてください。

    git remote set-url origin git@github-for-work:username/repo.git
  5. ローカルリポジトリにコミット識別用情報を設定する。
    以下のコマンドでコミット用の名前とEメールアドレスを設定する。

    git config user.name "Your Name"
    git config user.email "your_email@example.com"
  6. リモートリポジトリへの接続確認を行う。
    以下のコマンドでリモートリポジトリからフェッチできるか確認する。

    git.exe fetch -v --progress -- "origin"

    初回接続時は

    The authenticity of host 'github.com (20.27.177.113)' can't be established.
    ED25519 key fingerprint is SHA256:+DiY3wvv****************DA0zPMSvHdkr4UvCOqU.
    This key is not known by any other names.
    Are you sure you want to continue connecting (yes/no/[fingerprint])?

    のようにホストの認証を求められるのでyesと入力する。

    ちなみにTortoiseGitでFetchしたときに

    file

    のようなエラーが発生する場合はTortoiseGitのSSHクライアント設定を

    c:\Program Files\Git\usr\bin\ssh.exe

    に変更することで解決できるのではないかと思います。

以上で設定は完了です。

今回は仕事用のGitHubアカウントをSSH認証で利用しつつ、Visual Studio上のCopilotの個人用のGitHubアカウントをHTTPS認証(Personal Access Token)で使用する方法として紹介しましたが、Copilotに限らず複数のGitHubアカウントを使い分けたい場合に有用な方法ですので、是非試してみてください。


参考ウェブサイトなど


以上です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする