GitHub への認証方法を SSH から https に変更する際の落とし穴

GitHub への認証方法を SSH から https に変更する際の落とし穴

以前、GitHubSSH 接続をしましたが、推奨が https ということで、今回は https で接続しました。   最初から https で設定する人にはそこまで参考にならない記事ですが、SSH で接続した際に .git/config~/.gitconfig の設定を変えた覚えがある人は参考になるかもしれません(要するにこれらの設定が悪さをしていた)。
※ GitHub に SSH で接続する際に詰まったこと - conpot4の日記  ← 自分の場合はこの記事の最後の設定が原因でした。  

目次

環境

SSH の情報を消しておく

SSH の情報が残っているとそれで接続されてしまう可能性があるので削除します。

  • GitHub 上の SSH 公開鍵を削除
  • ~/.ssh/ の公開鍵と秘密鍵を削除
  • ~/.ssh/known_hostsGitHub の情報を削除

git config の設定を確認

以下のコマンドで .git/config に記載されているリモートリポジトリの URL を確認できます。

$ git config remote.origin.url

URL が https なら...

こちらの結果が以下の場合、問題なく https 接続できるはずです。  

https://github.com/<ユーザー名>/<リポジトリ名>.git

駄目な場合は ~/.gitconfig 下の設定を確認 を参照してください。  

URL が SSH なら...

以下の場合は SSH で接続されてしまっています。  

git@github.com:<ユーザー名>/<リポジトリ名>.git

以下のコマンドで .git/config の URL を https に書き換えます。  

$ git remote set-url origin https://github.com/<ユーザー名>/<リポジトリ名>.git

再び git config remote.origin.url コマンドで確認した結果が https に変わっていたら成功、接続できるはずです。   駄目な場合は ~/.gitconfig 下の設定を確認 を参照してください。

~/.gitconfig 下の設定を確認

自分の場合は ~/.gitconfig の以下の設定が悪さをしていました。   SSH 接続に切り替える設定です。   ~/.gitconfig はglobal 設定なので、local 設定の .git/config より優先されます。   したがって、いくら .git/config をいじっても変化がなかったということです。  

[url "github:"]
    InsteadOf = https://github.com/
    InsteadOf = git@github.com:

これを消して完了!