GitHubにSSH接続でpush/cloneする
目次
- 前提
- 経緯
- 参考ページ
- 手順
- SSHキーを作成する
- configファイルに記入する(macOSのみLinuxではconfigファイルは不要)
- SSHキーをssh-agentに追加してキーチェインに保存する
- GitHubにSSHキー(公開鍵)を登録する
- ローカルとリモートを紐づける(新規pushするときのみ)
- push/cloneする
前提
- macOS10.15.7上で作業
- Linux(Ubuntu20.04)環境は別記
- ローカルで複数のプロジェクト(ローカルリポジトリ)がある
- ローカルのリポジトリは各々commit済
- 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に追加してキーチェインに保存する
- GitHubにSSHキー(公開鍵)を登録する
- ローカルとリモートを紐づける(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
GitHubにSSHキー(公開鍵)を登録する
公開鍵(.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つ目以降のリポジトリは上記の繰り返し