どんなことが起きたか
いつもコードを書いているリポジトリで、fetchやpull、pushが出来なくなった。
いつも通りfetchをしようとすると、今までは聞かれなかったのに
Username
とPassword
を求められてしまう状況。
$ git fetch upstream
Username for 'https://github.com':XXXXX
Password for 'https://github.com':
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/XXXXX'
正しいものを答えても認証に失敗してしまう・・・
調査する
毎回ユーザネームとパスワードを入力しないといけないのは、めんどい・・・
同様の問題に関する記事を参考に調査してみた。
リポジトリのアドレスを調べる
参考記事によると、通信をhttp通信→sshプロトコル通信に変えればOKとのことなので
現在のgitの通信状態を調べる。
$ git remote -v
origin https://github.com/XXXXX/XXX (fetch)
origin https://github.com/XXXXX/XXX (push)
httpsでした。現在の通信状態がhttp通信であることがわかります。
社内リポジトリはsshでcloneしてくる必要があるのに、httpでcloneして居たことが判明。。。
ちなみに、ssh通信である場合は、https://
ではなくgit@
から始まります。
ssh通信に変更する
方法はGitの公式にあります
リモート URL を HTTPS から SSH に切り替える
上記サイトの通り、SSHに切り替えると
リポジトリのアドレスもgit@
から始まるアドレスに変更されたことが確認取れました。
それでもダメな場合
ssh通信に変更も完了し、
よし!ついにpullできる!と思い、いざpull。
$ git pull
identity_sign: private key /Users/{user_name}/.ssh/XXXX/id_rsa contents do not match public
git@github.com: Permission denied (publickey).
・・・?
別のエラーが出ました、、、
秘密鍵が一致せず、権限が拒否されているようです。
秘密鍵、公開鍵の作り直し
秘密鍵や公開鍵を確認しても、おかしいと思われる箇所が見当たらず
秘密鍵・公開鍵を作り直したら、うまく行きました。
作り直しの際は、こちらの記事が参考になりました。
GithubのSSH通信設定
途中、SSH接続のテストの際にでたエラーについても解決方法をわかりやすく書かれていました。
Warning: Permanently added the RSA host key for IP address '52.192.72.89' to the list of known hosts.
identity_sign: private key /Users/{user_name}/.ssh/XXXX/id_rsa contents do not match public
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
根本解決にはならないですが、どこが悪いのか検討もつかず
かなりの時間を費やしてしまう場合は秘密鍵、公開鍵の作り直しをするのも手段の一つかと思います。