Help us understand the problem. What is going on with this article?

githubを二段階認証に変更後に起こるエラーの対処方法

はじめに

Githubの設定を二段階認証に変更をした。
二段階認証に変更するとgitの通信プロトコルがhttpsからgitに変わる仕様になっている。
そこで今まで使っていたリポジトリがhttps経由ではpush出来なくなるので、自分の遭遇した2つのエラー内容と解決方法をメモしておきます。

まず確認すること

まずssh keyが登録されているか ssh -T git@github.comのコマンドで確認。
正しく登録されていることが確認できた前提。

1.git pushに失敗する

gitpushをした際に変更前に聞かれなかったusernameとpasswordを求められ、正しいものを答えても認証に失敗する

Username for 'https://github.com': hoge-user
Password for 'https://hoge-user@github.com':
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/hoge-user/repository-name.git/'

解決方法

該当するリポジトリまで移動し、Vimでvi .git/configを開きます。

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = https://github.com:hoge/repository.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

以上のようになっているかと思います。
[remote "origin"]内のurl = https://github.com:hoge/repository.giturl = git@github.com:hoge/repository.gitに変更します。
これでusernameとpasswordは聞かれずにpushすることができます。

2. git pushに失敗したもう一つのエラー

fatal: Unable to look up git@github.com:hoge (port 9418) (nodename nor servname provided, or not known)というエラーに遭遇した。

sshキーは正しく登録されているし、ドキュメントルートでless gitconfigを見てみてもおかしな記述がない。
何かと思い色々調べていて再度該当リポジトリでvi git/configを見てみると、

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = git://git@github.com:hoge/repository.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

という風に表示され、一見変な記述がないように見え、見逃していたのですが、url = git://git@github.com:hoge/repository.gitという記述になっていました。
この箇所をurl = git@github.com:hoge/repository.gitに修正することでpushがうまくいきました。

修正後

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = git@github.com:hoge/repository.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
sayama0402
Javascript(Riot.js / Vue / React / Nodejs) / PHP(Wordpress, cakePHP, Laravel) / Ruby(Ruby on Rails) / Python(Django) / SQL / Linux / Swift / Docker / AWS / Serverless
http://ken-sayama.hateblo.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした