GitHub に SSH で接続する際に詰まったこと
プルリクを練習するために Git と Github を SSH
か https
で接続する必要がありました。
今回は SSH
を用いた際に詰まった箇所(ユーザ名とパスワードを求められてしまう)を書き留めます。詳細な接続手順については省略。
目次
環境
- MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports)
- macOS Catalina バージョン 10.15.7
リモートリポジトリを紐つけてみるが...『パスワード認証は August 13, 2021 に使えなくなったから別の認証にしてね』のメッセージ
ローカルリポジトリにて以下のコマンドを実行して、リモートリポジトリと紐付けます。
$ git remote add origin url
git push
を試すと...(-u
を付けるとこれ以降は引数を省略可能になる)
$ git push -u origin main
以下のようなメッセージが表示されます。
remote: Support for password authentication was removed on August 13, 2021. remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication. fatal: Authentication failed for 'https://github.com/conpotaaa/saru-pull-request-test.git/'
要約すると...『パスワード認証は August 13, 2021 に使えなくなったから別の認証にしてね』とのことです。
SSH で接続する手順(省略)
SSH
を使って GitHub に接続していきます。
以下を参考にして接続がうまくいったらこの記事は読み飛ばして構いません。
接続の具体的な手順は以下のサイトが参考になります。 GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~ - Qiita
GitHub の接続とは直接的には関係ありませんが参考になるかと思います。 Mac から さくら VPS の Debian に SSH 接続をする手順 - Tech Potage
詰まった箇所の原因と対処(.git/config
の URL 設定を見直し)
結論から言うと、.git/config
の URL が https
のものになっていたことが原因です。
こちらの記事を参照した前提で話を進めて行きます。
事象(詰まった箇所)
上記の Qiita を参考に SSH を設定、いざ接続!以下のコマンドを試す。
$ ssh -T git@github.com
しかし、「ユーザ名とパスワードを求められる」 → 「最初と変わらない」 → 「ssh 接続がうまくいってない...」
原因と対処
.git/config
の以下の部分を修正後のように書き換えてください(パスは各自のリポジトリを参照)。
私の場合 git remote add origin url
において、ssh
ではなく htttps
をしていたため、修正前のようになっていました。 これだと、https
で接続しようとしてしまいます。
修正前
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = https://github.com/conpotaaa/saru-pull-request-test.git #ここだよ fetch = +refs/heads/*:refs/remotes/origin/* [branch "main"] remote = origin merge = refs/heads/main
修正後
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = github:conpotaaa/saru-pull-request-test.git #ここだよ fetch = +refs/heads/*:refs/remotes/origin/* [branch "main"] remote = origin merge = refs/heads/main
ssh
のパスを取得してくるには GitHub プロジェクトページの以下の部分からコピーできます。
.git/config
の [remote "origin"]
の url
部分だけピンポイントで確認するコマンドです。
これで https
か ssh
かがすぐわかります。
$ git config remote.origin.url
また、以下のコマンドで .git/config
の [remote "origin"]
の url
が ssh
に書き換わります。
$ git remote set-url origin git@github.com:[ユーザID]/[リポジトリ].git
これのほうが楽では...
~/.gitconfig
を以下のようにしたほうが簡単だが、設定ファイルをいじれて勉強になったので良し!
ちなみにこれは SSH
接続に切り替える設定です。
global 設定なので、local の設定より優先されます。
[url "github:"] InsteadOf = https://github.com/ InsteadOf = git@github.com: