4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【GitHub・SSHキー設定】git push -u origin mainができない!

Posted at

はじめに

リモートリポジトリにpushしようと思い、
表題の通り、git push -u origin mainを実行した結果、以下のエラーが発生してしまった、、、

The authenticity of host 'github.com (20.27.177.113)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com,20.27.177.113' (ECDSA) to the list of known hosts.
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

このエラーメッセージの意味を調べると要するに
Gitリポジトリへの接続の際、SSHキー接続の認証に失敗したということらしいです。。

以下のコマンドを実行するとSSHキーが正しく設定されているかどうかを確認できます

ssh -T git@github.com

試しに実行してみるとやはりSSH接続に必要な認証情報が無効っぽい

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

この問題を解決するには新たにSSHキーを追加して
リモートリポジトリにアクセスできるように設定する必要があるらしいので

  • 新しいSSHキーを作成
  • SSHキーをリモートリポジトリに追加する

という順番で設定を行なっていきます。

新しいSSHキーを作成

まずは以下のコマンドを実行して、新しいSSHキーを生成します。

ssh-keygen -t rsa -b 4096 -C "githubに登録しているメールアドレス"

実行すると以下のようメッセージが表示されます。

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/username/.ssh/id_rsa): 

これは秘密鍵を保存するためのファイル名を入力するように求めるメッセージです。
デフォルトではid_rsaというファイル名になりますが
任意のファイル名を設定する場合は設定したいファイル名を入力してください。
どうでもいい場合はEnterキーを押して飛ばしてください。

次に以下のメッセージが表示されます。

Enter passphrase (empty for no passphrase): :

これはパスワードの設定を求めるメッセージです。
パスワードを設定する場合は設定したいパスフレーズを入力してください
もう一度入力を求められるので同じパスフレーズを入力してください。
必要ない場合は2回Enterキーを押して飛ばしちゃってください。

以下のメッセージが表示されれば無事SSHキー作成は完了です👌

Your identification has been saved in /Users/username/.ssh/id_rsa.
Your public key has been saved in /Users/username/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx email@example.com
The key's randomart image is:
+---[RSA 4096]----+
|     o=+==+.     |
|     o++=+o      |
|     .+.B.+      |
|      o.*.o      |
|     .oS+= .     |
|     .+=B.o      |
|      +=Oo..     |
|     . *.*.      |
|      E oo.      |
+----[SHA256]-----+

SSHキーをリモートリポジトリに追加する

まずは公開鍵をクリップボードにコピーします。

Macの場合
pbcopy < ~/.ssh/id_rsa.pub

Windowsの場合        	
clip < ~/.ssh/id_rsa.pub

もしくはcatコマンドを使えばターミナル上に公開鍵の中身を表示できるので
表示された内容をコピーするでも大丈夫です。

% cat ~/.ssh/id_rsa.pub
<!-- 以下をコピー -->
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCZr+IiNGJlobDASK/RwItasd
fNb1PJzO0vUJSX3NJQFsAqtasdfsaWHfsHZzP9UhHd8zMBsasdfrtw4cFp1zEM
i1im35AjU7n52AdgZRNF/ZSAszR8VT9LasdfgadpD1XfUhcYDipCkqafh9x96O
TVf/nPKn8Have+ofd2p+CIqnkCnmRySeo3NK0Yx7PFflyiLOWQvjj+xecdU3jA
dUPA0/sxcGrbUjUAhif4CAGBJSnXOi4FrGahn52wGPwUdr10HqjC3do0Dw5Ptr
iz1RQA6C7FahDLwb41pfqHc6/PjasodihasdsapoFkNzOswusDqbeAwXXUqrAx
7/AibrfHsMFXNLvt01dii/zWIMoGLS7+lfthKTLTk5CC/J1HqBHBbLyOrJDn/A
Tk6GdtmdR+upzmMxmGJIimHb+eIL12IJOBL2z72nasdgasqjLojLdJNgxxffmv
CwLl0jaYH2Hstd2aNkyYAEd+aRuLOUkAPEHloSHeY+nSqnZ0SqrSj4cw6EgRss
u6WNsSw== email@example.com

公開鍵をコピーしたらGithubにアクセスしましょう!
アクセスできたらSSHキーの登録画面を表示します。手順は以下を参考にしてください。

  • 画面の右上に表示されている「アイコン」をクリックし「Settings」をクリック
  • アカウント設定の中からSSH and GPG keysをクリック
  • 表示された画面上のNew SSH Keyボタンをクリック
    以上の手順で3枚目の写真と同様の画面が表示されればOKです。
    スクリーンショット 2023-04-15 17.05.00.png

スクリーンショット 2023-04-15 17.23.55.png

スクリーンショット 2023-04-15 17.10.37.png

画面のTitle欄に任意の名前を指定してKey欄に先ほどコピーした公開鍵の内容を貼り付けて
Add SSH Keyボタンをクリックすれば登録完了です👍

SSH接続ができるようになったか確認するため、
ターミナルに戻り、冒頭に実行した以下のコマンドをもう一度実行してみます。

ssh -T git@github.com

実行後、以下のメッセージが表示されればSSH接続は成功です🎉

Hi username! You've successfully authenticated, but GitHub does not provide shell access.

その後、git push -u origin main を実行したら無事プッシュできました!
めでたしめでたし、、、

最後に

プログラミング初心者にとってはリモートにプッシュするだけでも一苦労です😅
これからもトライアンドエラーを繰り返していきたいと思う所存です

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?