githubにsshで接続したいだけなのになぜこんなに時間がかかる。
なのでもう迷わなくて済むようにまとめました。
私の環境
- macOS Ventura 13.2.1
前提
- すでにgithubアカウントを持っている
- すでにssh、gitがインストールされている(macにはデフォルトで入っているので問題ないと思うが)
1. ssh-keyを保管するディレクトリを作成する
何も指定しないと~/.ssh/
直下に作成することになる。
しかし、複数のssh-keyを管理することを考慮してディレクトリをわけたい。
なので今回は ~/.ssh/github/
直下にkeyを生成する。
% cd ~/.ssh/
.ssh % mkdir github
.ssh % ls
github
できた
もしno such file or directoryと怒られたら
ディレクトリを作成してから再度1.を行う
% cd ~/.ssh/
cd: no such file or directory: /Users/you/.ssh/ ←怒られた
% mkdir ~/.ssh/
2. ssh-keyを生成する
以下の通りオプション指定しておくとchmod
コマンド等で後からkeyの権限を変更しなくて済む。
※ your_email@example.com
をご自身のgithubのメールアドレスにしてください。
% ssh-keygen -t rsa -b 4096 -C 'your_email@example.com'
Generating public/private rsa key pair.
次に、1.どこに、2.どんな名前で生成するか聞かれる。
何も指定しないと(そのままreturn/enterを押すと)1.~/.ssh
直下に、2.id_rsa
という名前で生成される。
しかし、複数のssh-keyを管理することを考慮して特定の名前をつけることにする。
なので今回は、1.~/.ssh/github/
直下に、2.github_id_rsa
という名前で生成する。
※ /Users/you/.ssh/github/github_id_rsa
のyou
はご自身のマシンの名前にしてください。
Enter file in which to save the key (/Users/you/.ssh/id_rsa): /Users/you/.ssh/github/github_id_rsa
続いて、パスワードを聞かれる。
何も指定しないと(そのままreturn/enterを押すと)パスワードなしでssh-keyが生成される。
今回は念の為パスワードを指定する。
Enter passphrase (empty for no passphrase): # パスワードを打ってenter/returnを押す
Enter same passphrase again: # もう一度入力する
+---[XXX 0000]----+
| |
| |
| なんか |
| キラキラ |
| した |
| やつ |
| *.*A. . |
| |
| |
+----[XXX000]-----+
できた
3. 本当にkeyが生成されたか確認する
% cd ~/.ssh/github
github % ls
github_id_rsa github_id_rsa.pub
ありそう
% ls -al | grep github
-rw------- 1 you staff 1234 Feb 23 22:58 github_id_rsa
-rw-r--r-- 1 you staff 567 Feb 23 22:58 github_id_rsa.pub
やはりありそうなのでOK
権限はssh-keygenしたときにオプションで指定したため問題なし
4. ssh-agentに作成したkeyを登録する
念のためssh-agentが動いているか確認する
% eval "$(ssh-agent -s)"
Agent pid 63237
動いてるのでOK
% ssh-add /Users/you/.ssh/github/github_id_rsa
Enter passphrase for /Users/you/.ssh/github/github_id_rsa: # 2.で指定したパスワードを入力
Identity added: /Users/you/.ssh/github/github_id_rsa (your_email@example.com)
できた
5. ~/.ssh/config
の設定
% vim ~/.ssh/config
Host github.com
HostName github.com # このまま
IdentityFile ~/.ssh/github/github_id_rsa # keyのpathを指定する
IdentitiesOnly yes # IndentityFileで指定したpathのkeyのみを参照するため
TCPKeepAlive yes # 接続中に操作せずに数分放置してもsshが切断されないようにするため
AddKeysToAgent yes # 接続時に毎回パスワードを求められないようにするため
UseKeychain yes # 接続時に毎回パスワードを求められないようにするため
User git # このまま
6. github側での設定
6.1 githubにいく前に生成したkeyをclipboardにコピーしておく
% pbcopy < ~/.ssh/github/github_id_rsa.pub
6.2 githubにログインして新規sshを追加する
githubのご自身のアイコンをタップし、「Settings」をクリックする
サイドバーから「SSH and GPG keys」を、その後「New SSH key」をクリックする
Titleを入力したら、6.1でコピーしたkeyをペーストし、「Add SSH key」をクリックする
7. 接続を確認する
% ssh -T git@github.com
Hi your_github_name! You've successfully authenticated, but GitHub does not provide shell access.
できた
もしThe authenticity of host 'github.com (xx.xx.xxx.xx)' can't be established.と怒られたら
初めてgithubに繋ぐ場合に出る警告なので、yesを入力する。
% ssh -T git@github.com
The authenticity of host 'github.com (xx.xx.xxx.xx)' can't be established.
AA11111 key fingerprint is SHA256:hogehogehogehoge...
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes ←yesを入力
8. git configも設定する
8.0 前提知識
gitの設定ファイルは3種類ある
種類 | 影響範囲 | ファイルのpath | 備考 |
---|---|---|---|
system | システム全体、全ユーザの全リポジトリ | /etc/gitconfig |
- |
global | 当該ユーザの全リポジトリ | ~/.gitconfig |
HOME直下 |
local | 特定のリポジトリのみ | 特定のリポジトリのpath/.git/config |
指定したリポジトリ直下の .git
|
今回はglobalで設定を行う
8.1 ~/.gitconfig
の設定
% git config --global user.name 'your_github_user_name'
% git config --global user.email your_email@example.com
8.2 確認する
% vim ~/.gitconfig
[user]
name = your_github_user_name
email = your_email@example.com
できてる
これでも確認できる
% git config --list
user.name=your_github_user_name
user.email=your_email@example.com
できてる
参考
GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~
お前らのSSH Keysの作り方は間違っている
GitHubにSSH認証で接続する
【Github, SSH】SSH鍵を作成し、Githubへそれを登録する手順
gitのssh接続に使用する~/.ssh/configの設定について
Gitの設定をgit configで確認・変更
gitとsshのconfigについて(備忘録)