ローイングファンのプログラミング日記

ボート競技やプログラミングについて書きます

GitHubにSSH接続でpush/cloneする

目次


前提

  • macOS10.15.7上で作業
    • Linux(Ubuntu20.04)環境は別記
  • ローカルで複数のプロジェクト(ローカルリポジトリ)がある
  • GitHubアカウントは1つ
    • 同一アカウント内に複数のリポジトリを作成する/所有している
  • 既存のSSHキーはない


経緯

GitHubの2段階認証を設定したらhttps接続ができなくなった。
以下のエラーがでたときに対処した手順のメモ。

ERROR: Repository not found.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights

参考ページ

参考というか下記のページ通りに作業した

GitHub Docs
新しい SSH キーを生成して ssh-agent に追加する
https://docs.github.com/ja/free-pro-team@latest/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent

GitHub Docs
GitHub アカウントへの新しい SSH キーの追加
https://docs.github.com/ja/free-pro-team@latest/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account


手順

  • SSHキーを作成する
  • configファイルに記入する(macOSのみ)
  • SSHキーをssh-agentに追加してキーチェインに保存する
  • GitHubSSHキー(公開鍵)を登録する
  • ローカルとリモートを紐づける(push時のみ)
  • push/cloneする


SSHキーを作成する


.sshディレクトリに移動する

$ cd ~/.ssh


.sshディレクトリがない場合は作成する

$ mkdir ~/.ssh

# 大事なディレクトリなので権限の設定をする
# 所有者のみ読み込み、書き込み、実行ができるように設定
$ chmod 700 ~/.ssh

# 作成したディレクトリに移動する
$ cd ~/.ssh


chmodコマンドでグループ、その他のユーザーは読み込、書き込、実行ができないディレクトリができた

chmodコマンドで参考にしたページ
chmod コマンド
https://qiita.com/ntkgcj/items/6450e25c5564ccaa1b95


keyをつくる
keyはのちのち複数つくるので任意の名前をつけておく
例として名前をid_rsa_new_fileにした

$ ssh-keygen -t rsa -b 4096 -C "[GitHubのメールアドレス]" -f id_rsa_new_file

# 確認 公開(.pub)、非公開のペアで鍵ができるはず
$ ls
#=> id_rsa_new_file  id_rsa_new_file.pub


configファイルに記入する(macOSのみLinuxではconfigファイルは不要)

configファイルをエディタで開いて以下を記入(追記)する
configファイルがない場合は作成する
~/.ssh/config

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa_new_file


以後、リポジトリを増やしてキーを追加するときはIdentityFile ~/.ssh/[キー名]を追記していく。


SSHキーをssh-agentに追加してキーチェインに保存する

バックグラウンドでssh-agentを開始する

$ eval "$(ssh-agent -s)"
#=> Agent pid *****


ssh-agentに追加してキーチェインに保存
-KオプションはmacOSのみ、Linuxでは不要

$ ssh-add -K ~/.ssh/id_rsa_new_file


GitHubSSHキー(公開鍵)を登録する

公開鍵(.pub)の内容をコピーする

コマンドでコピー

$ cat ~/.ssh/id_rsa_new_file.pub | pbcopy
# または
$ pbcopy < ~/.ssh/id_rsa_new_file.pub

もしくはエディタで開いて内容をまるごとコピーする


GitHubリポジトリを作ったら/既存のリポジトリ
setting > Deploy keys > add deproy keyとすすんでコピーした公開鍵を貼り付けて登録する


ローカルとリモートを紐づける(新規pushするときのみ)


# ローカルリポジトリに移動する
$ cd [プロジェクトディレクトリ名]

# SSH接続用のアドレスを登録する
$ git remote add origin git@github.com:[アカウント名]/[リポジトリ名].git


push/cloneする

push

# 必要に応じてブランチ名を変更する
$ git branch -M main

$ git push -u origin main


clone

$ git clone git@github.com:[アカウント名]/[リポジトリ名].git


以上、-u origin mainは最初だけで以降はgit pushのみでorigin mainにpushできる


2つ目以降のリポジトリは上記の繰り返し