自分でセットアップしたときに色んなサイトを行き来してしまい、効率が悪かったのでまとめてみました。
最下部に参考にさせて頂いた記事をまとめて記載してあります。
(非常に勉強になりました。ありがとうございます!)
おおむね、GitHub公式ヘルプページに沿った手順です。
誤り等あればご指摘頂けますと幸いです。
目的
Git使用時の効率UP
SSH接続しなかった場合、GitHubに接続するたびにユーザー名・パスワードを入力する必要があり、効率が悪いです。
SSH接続をすれば、その入力の手間を省けるためスムーズにgitコマンドを使用できて効率UP!
前提条件
環境
- OS: macOS Mojave version 10.14.6
- ターミナルのシェル: zsh
自分のものに置き換えて欲しいもの
- メールアドレス:
your_email@example.com
- パスワード:
your_password
- ルートディレクトリ:
/Users/you/
- GitHubユーザーネーム
your_username
- Git管理するディレクトリ:
/Users/you/myproject/
事前準備
- GitHubアカウントの取得
手順
- 既存のSSHキーの確認(あれば「ssh-agentに追加する」へ移動)
- 新しいSSHキーを生成してssh-agentに追加する
- GitHubアカウントへの新しいSSHキーの追加
- SSH接続をテストする
1. 既存のSSHキーの確認
- ターミナルで既存のSSHキーが存在するかを確認する。
以下コマンドを入力。($は入力不要)
$ ls -al ~/.ssh
-
出力されたファイル一覧から、自分は公開SSHキーを持っているか確認する。
以下ファイルが出てくれば既に公開鍵を持っているということ。- id_dsa.pub
- id_ecdsa.pub
- id_ed25519.pub
- id_rsa.pub(自分の場合はこれでした。GitHub使用者全体の9割以上はRSAらしいです。)
-
現在使用している鍵の暗号強度の確認
※公開鍵はid_rsa.pub
として記載しています。
$ ssh-keygen -l -f ~/.ssh/id_rsa.pub
出力が以下のように、鍵長が2048以上、かつ暗号化方式がRSA,ECDSA,Ed25519であればセキュリティ上問題ないそうです。
2048 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your_email@example.com (RSA)
2. 新しいSSHキーを生成してssh-agentに追加する
(ない場合のみ)新しいSSHキーを生成する
- ターミナルを開く。
- 新しいSSHキーを生成する。
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
- 以下メッセージが表示されたら、Enter キーを押す。
> Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
- 次に出るパスフレーズは入力推奨
無視してEnterでもいいと書いている記事もありましたが、GitHubは入力を推奨しています。
任意のパスフレーズを決め、入力してEnter。
何も入力せずEnterを押すと、パスフレーズなしとなります。
Enter passphrase (empty for no passphrase):
もう一度同じパスフレーズを入力し、Enter。
Enter same passphrase again:
SSHキーをssh-agentに追加する
-
ssh-agentを使うメリット
- 複数のサーバーにSSH接続する際、毎回sshコマンドを入力しなくても良くなる(自動化)
- サーバー上に秘密鍵をおく必要がない。
-
バックグラウンドでssh-agentを開始し、秘密鍵の登録状況がないことを確認する。
ssh-agentを起動。
$ eval "$(ssh-agent -s)"
秘密鍵の登録状況を確認する。なければ以下のように表記がある。
$ ssh-add -l
The agent has no identities.
- (macOS Sierra 10.12.2以降を使用の場合)
~/.ssh.config
ファイルを修正し、以下のように記述。
Host your_username
HostName github.com
User git
AddKeysToAgent yes
UseKeyChain yes
IdentityFile ~/.ssh/id_rsa
- SSH秘密鍵をssh-agentに追加し、パスフレーズをキーチェーンに保存する。
ssh-add -K ~/.ssh/id_rsa
3. GitHubアカウントへの新しいSSHキーの追加
- SSHキーをクリップボードにコピーする
$ pbcopy < ~/.ssh/id_rsa.pub
- GitHubにログインし、以下手順でSSHキーを登録する
- 右上のプロフィールをクリックし、
Settings
で設定画面へ移動 - 左側のメニューから
SSH keys
をクリック -
Add SSH Key
をクリック -
Title
に識別できる文字列を入力(My Macbook Proなど) -
Body
にSSHキーをペースト -
Add Key
をクリック
- 右上のプロフィールをクリックし、
4. SSH接続をテストする
- ターミナルを開く。
- 以下コマンドで接続を確認する。
$ ssh -T git@github.com
- 接続するかの確認メッセージが出るので、fingerprintが一致するかを確認して、
yes
と入力。 - 下記文字列が出力されれば無事認証!
Hi your_username! You’ve successfully authenticated, but GitHub does not provide shell access.
【補足:設定漏れの場合】SSHキーパスフレーズを追加または変更する
とりあえずEnterでパスフレーズなしで済ませてしまった!というあなたのために。
以下コマンドで既存の秘密鍵のパスフレーズの変更が出来る。
$ ssh-keygen -p
変更したい秘密鍵がカッコ内のファイルで間違いなければEnter。
Enter file in which the key is (/Users/you/.ssh/id_rsa):
任意のパスフレーズを決め、入力してEnter。
Enter passphrase (empty for no passphrase):
もう一度同じパスフレーズを入力し、Enter。
Enter same passphrase again:
下記メッセージが出力されたらパスフレーズの設定が無事完了!
Your identification has been saved with the new passphrase.
参考にさせて頂いたサイト(ありがとうございます)
GitHub に SSH で接続する - GitHub ヘルプ
GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~ - Qiita
お前らのSSH Keysの作り方は間違っている - Qiita
2014-07-05
ssh-agentの使い方 - Qiita
~/.ssh/configについて - Qiita