プログラミング教務部

MacOSでFlutterを使ってデスクトップアプリを作成します。最終目標は時間割ソフトの作成。

GitHubのSSH認証でハマりました

久しぶりにGitHubに接続したら

このブログを書くきっかけになったFlutter

学習用のプログラムをGitHubにアップしようと久しぶりにアクセスしました。

実は最近GUIばかり使用しているので、コマンドを入力するのは億劫になっています。gitはコマンドラインツールなので、GitHubにはSourceTreeでアクセスしているんです。そこで、抜け出せない沼にはまりました。

 

git@github.com: Permission denied (publickey).

fatal: Could not read from remote repository.

このような、メッセージが表示されてpushができない状態になりました。ネットで調べてみると結構前からGitHubはパスワード認証からSSH認証に変更されていたようで、ここはネットの力を借りて解決しようと思いましたが、一筋縄で行かなかったのでここに記憶の限り紹介します。

まずはHTTPSからSSHプロトコルを変更

とりあえず認証プロトコルSSHに変更しないと始まらないのでSourceTreeからアカウントをSSHに変更した。下の画面はSourceTreeのアカウント選択画面でダブルクリックすると現れる画面でSSHに変更します。

f:id:sawayaka_e1:20220416200431p:plain

ここから迷路の始まりです。編集ボタンを押してプロトコルを変更すると<アカウント名>-GitHubといった感じのSSHキーを作ってくれます。そのままGitHubのサイトに飛んでくれる優れものです。筆者の環境ではエラーになりましたが、通常うまくいくはず。

f:id:sawayaka_e1:20220416200832p:plain

筆者はSSHキーをクリップボードにコピーして、自分で貼り付けました。貼り付ける先は、GitHubの自分のアカウントにあるメニューからSettingsを選択して、SSH snd GPG keys を選択してSSHキーを登録しました。

f:id:sawayaka_e1:20220416201721p:plain


これでGitHubSSH接続するための公開鍵・秘密鍵の作成と公開鍵をGitHubに登録ができたので、無事に接続といきたいところです。

元々、使えていたのでここに実は油断があったのは3日後に思い知りました。

GitHubとの通信開始

タイトルにあるようにまず通信の確認をしたわけではありません。いきなりpushを試しました。まだエラーになります。Permission denied (publickey). が眩しいです。

泣く泣く、原因追及の旅は続くのでここで通信の確認をするわけです。

 

$ ssh -T git@github.com

 

コマンドラインから入力してみます。すると接続は正常にできていました。では、pushできない原因は?謎は深まるばかりです。

またまた、ネットで調べると~/.ssh/configに設定があるらしいので記述の確認してみることにしました。下の画像は訂正したものですがIdentityFile の記述が先にも書きましたがSourceTreeが作成してくれるファイルが<アカウント名>-GitHub.pubなので最初の記述は下のようではありませんでした。標準ではid_rsa.pubらしいです。複数アカウントを使い分けるときに違う名前で使用するらしいですが、よくよく考えてみると複数アカウントを使い分けているわけではないので、標準の名前にしようと思いました。これが成功の第一歩でした。

f:id:sawayaka_e1:20220416210504p:plain

 

 

勇気を出してコマンドライン

 

$ mv <アカウント名>-GitHub.pub id_rsa.pub

$ mv <アカウント名>-GitHub id_rsa

 

としました。

パーミッションを確認し

 

$ chmod 644 id_rsa

 

で読み出しを許可します。そしてエディタで~/.ssh/configを編集しました。上記の画像のようにIdentityFile を標準の名前id_rsa.pubにしました。

これでもpushできない

まだpushできません。途方に暮れていたら、ふと立ち寄ったサイトの記述が目に止まりました。下図をよく見てもらえると、ぼかしを入れてあるので分かりにくいですがパスがSourceTreeでは入力されているのですが、GitHubリポジトリのクローンにあるパストが一致していなかったのです。

f:id:sawayaka_e1:20220416213258p:plain

f:id:sawayaka_e1:20220416213436p:plain

このパスをGitHubからコピーしてSourceTreeのパスに貼り付けると、なんと4日間できなかったpushができました。

参考にしたサイトを紹介します

みなさんありがとうございます。本当に助かりました。

ormcat.net

qiita.com

qiita.com