14
12

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で接続する

Last updated at Posted at 2020-02-23

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_rsayouはご自身のマシンの名前にしてください。

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
~/.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」をクリックする
Screenshot 2023-05-28 at 15.58.43.png

Titleを入力したら、6.1でコピーしたkeyをペーストし、「Add SSH key」をクリックする
Screenshot 2023-05-28 at 16.00.05.png

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について(備忘録)

14
12
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
14
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?