鶏口牛後な日々

魔法使い(なんでも作れるエンジニア)を目指してます。ブログは発散中

git pullしたのにリモートレポジトリさんから怒られた

$ git pull origin develop
Permission denied (publickeyなんたらかんたら).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

どうしたんですか、リモートレポジトリさん!
思い当たりまくったのは、リモートレポジトリにアクセスする元が変わったこと。
まぁ怒られそうではありますが。

ここで、リモートのURLを設定し直したら、ちゃんとpullできるようになりました。

git remote set-url origin NEW_URL

ただ、これはなぜなのか、疑問は残っています。
変わったのはローカルの方なのに、リモートのURLを設定し直したら治るという。
でも、新しいローカルで、リモートのURLを設定することで、ペアを組みなおしたということでしょうか。

この後で、git pushしようとしたら、ユーザー名とパスワードを聞かれました。
URLをセットすると、pullはできるようになるけど、pushはユーザー名とパスワード入れないとdenyされるってことですね。





おまけ、

~/.ssh/config

sshの設定が入っている。

.git/config

に gitのremote の設定が入ってる。

~/.ssh/config/known_hosts

に、gitのサーバ情報が入っていて、SSH 接続するサーバーがいつの間に入れ替わっていたということを防ぐための仕組みで、サーバーが持っている鍵の情報が入っている。
初めて ssh するときとか、初めて git clone するときに yes/no を聞かれますけど、あれはこのサーバーには初めて接続するけど認識あってますか?って聞いていて、yes と答えるとこの `known_hosts` に登録されます。
また、サーバーの持ってる鍵をバックアップせずにサーバーの OS の入れ替えとかすると、鍵が変わってしまうので、そのときには `known_hosts` に記録されている鍵と違う鍵を提示してきてるよって警告が出ます。