GitHubにpushできない問題が起きた

TL; DR

GItHubにpushしようと思ったらInvalid user name or passwordと出てきてpushできなかった。

そこでsshの公開鍵認証を行なってgitのremoteのURLをhttps://...からgit@github.com:[user name]/[repository name]としたらうまくいくようになった。

経緯

先日に就活で某社から内々定(?)をもらって現在早速リモートで仕事をもらっているのだけど、仕事内容としてはサービスに組み込めるようなアルゴリズムを実装するというもの。

お給料がなかなかよく、30万円(=3万円/日×10日間)で学生にしてはめちゃめちゃ嬉しい感じ。

そんなこんなで現在実装しているんだけど、今日ある程度は雛形がができたので早速ブランチを切ってpushしようとするとInvalid user name or passwordとか出てくるし、なんか認証エラーっぽいエラーメッセージが出てる。

そんなこんなで色々試してみた。

解決法その1

GitHubssh接続の公開鍵認証をする。

実は現在別の京都のAIベンチャーインターンとして入ってるんだけど、そこのGitのシステムでsshの認証が必要で、公開鍵と秘密鍵を作って認証したことがあった。

今回はGitHubでそれと同じことをやってみる。

まずはsshの鍵の生成をする。

$ cd ~/.ssh
$ ssh-keygen -t rsa

途中でなんか色々質問があるので(鍵の名前をどうするかとかパスワードとか)、それを済ませば鍵が作られる。

f:id:komi1230:20190609220733p:plain
sshの鍵のやつ

ここでは鍵の名前をid_rsaとしたのでこうなってる。

公開鍵がid_rsa.pubで、秘密鍵id_rsaになってるので、秘密鍵の方は絶対に秘密にしておくようにしましょう。

さて、これをGitHubに貼り付ける。

GitHubの設定のSSHとGPGのところにこれを貼りましょう。

f:id:komi1230:20190609221421p:plain
SSHの鍵を貼るところ

それで貼る。名前はどうでもいいっぽい。

f:id:komi1230:20190609221501p:plain
こんな感じで貼る

そうするとこうなります。

f:id:komi1230:20190609221538p:plain
SSHの鍵がうまく貼れたっぽい

さて、最後に確認で、GitHubssh接続してみよう。

$ ssh -T git@github.com

そうするとHi komi1230! You've successfully authenticated, but GitHub does not provide shell access.と返ってきて、ちゃんと接続ができてることが確認できた。

で、これでpushできるか試したんだけど、まだうまくいかない...

解決法その2

Gitのremoteがダメっぽい。

今のディレクトリで、まずgitのユーザー情報を整えておく。

$ git config --global user.name [ユーザー名]
$ git config --global user.email [メールアドレス]

さて、リモート先を少し変える。

今までは

$ git remote origin https://github.com/[ユーザー名]/[リポジトリ名]

だったけど、set-urlhttps://...からgit@github.com:[user name]/[repository name]とする。

$ git remote set-url origin git@github.com:[ユーザ名]/[リポジトリ名].git

とする。

さて、それでpushしてみたらようやくできたので解決。

考察

前までは普通にremoteをURLで打ち込んでいけてたはずだったんだけど、なんでこんなことになったのか考えてみたが、よくわからず。

ただ、2段階認証とかsshの関係でURLで打ち込むのではなくgit@github.com/...とするとローカルのシステムの認証とかをクリアしてくれてるのかもしれない。

とりあえず今回無事に解決したので、引き続き仕事を進めていこうと思う。