Tech Potage

Webエンジニア目指してフィヨルドブートキャンプで学習中です

GitHub に SSH で接続する際に詰まったこと

GitHubSSH で接続する際に詰まったこと

フィヨルドブートキャンプのプラクティスにて、プルリクを練習するために Git と GithubSSHhttps で接続する必要がありました。
今回は SSH を用いた際に詰まった箇所(ユーザ名とパスワードを求められてしまう)を書き留めます。詳細な接続手順については省略。

目次

環境

リモートリポジトリを紐つけてみるが...『パスワード認証は 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 のものになっていたことが原因です。
こちらの記事を参照した前提で話を進めて行きます。

GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~ - Qiita

事象(詰まった箇所)

上記の 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 部分だけピンポイントで確認するコマンドです。
これで httpsssh かがすぐわかります。

$ git config remote.origin.url

また、以下のコマンドで .git/config[remote "origin"]urlssh に書き換わります。

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

これのほうが楽では...

~/.gitconfig を以下のようにしたほうが簡単だが、設定ファイルをいじれて勉強になったので良し!
ちなみにこれは SSH 接続に切り替える設定です。global 設定なので、local の設定より優先されます。

[url "github:"]
    InsteadOf = https://github.com/
    InsteadOf = git@github.com: