#なぜSSH接続するのか
HTTP形式やHTTPS形式などGitHubで使える通信規格は何種類かあり、
一般的にはHTTP、HTTPS形式が使われています。
しかし、SSHプロトコルを使うことで、リモートサーバーや各種サービスへの接続や認証が可能となり、GitHubに接続する際にユーザー名などを省略することができます!
#接続方法
GitHubにSSH接続するためには、鍵の登録が必要となります。
#公開鍵、秘密鍵を作成する
鍵とは公開鍵と秘密鍵のことです。公開鍵は一般に公開するもの、秘密鍵はほかの人に見られてはいけません。
そのため秘密鍵は自分で保持し、公開鍵は相手(今回であればGItHub)に送ります。
#公開鍵と秘密鍵のペアを生成
まずは鍵を作成するため、鍵を入れるフォルダーに移動します。
$cd ~/.ssh
初めて鍵を作成するときには何も入っていない状態です。
次のコマンドで鍵を作成します。
$ssh-keygen -t rsa
作成する際にいろいろ聞かれますが、そのままEnterを押すと、id_rsaとid_rsa.pubの二つの鍵が生成されます。
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
すでに鍵を生成している場合、上書きされるので注意してください(以下)
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
/home/user/.ssh/id_rsa already exists.
Overwrite (y/n)?
#GitHubに公開鍵をアップする
https://github.com/settings/ssh
で公開鍵を設定できます。
「title」に公開鍵名、「key」に公開鍵の中身を入れます。
鍵の中身のクリップボードへのコピーは
Macの場合
$ pbcopy < ~/.ssh/id_rsa.pub
Windowsの場合
$ clip < ~/.ssh/id_rsa.pub
Ubuntuの場合
$ cat ~/.ssh/id_rsa.pub | clip.exe
でコピーできます。
#接続を確認する
ターミナルに戻り、以下のコマンドを打って確認してください。
$ ssh - T git@github.com
Hi (account名)! You've successfully authenticated, but GitHub does not provide shell access.
と返ってきたら成功です!!
しかし...
鍵を作成する際に、名前を指定していない場合はうまくいかないかもしれません。
理由として、
ssh接続を行う際、「~/.ssh/id_rsa」、「~/.ssh/id_dsa」、「~/.ssh/identity」しかデフォルトでは見にいかないからです。
これに対応するためにsshディレクトリ内にconfigを作成します。
~/.ssh/config
configフォルダに
Host github github.com
HostName github.com
IdentityFile ~/.ssh/id_git_rsa #ここに自分の鍵のファイル名
User git
を作成し、再び接続すると成功します。
再び接続
$ssh -T git@github.com
Hi (account名)! You've successfully authenticated, but GitHub does not provide shell access.
今度こそSSH接続が成功しました!
#GitLabなどにもSSH設定したい場合
自分の場合はGitLabにもSSH設定していたため、Configファイルにそれぞれ設定してあげる必要がありました。
以下
Host gitlab
HostName gitlab
User UserName
identityFile ~/.ssh/id_rsa
Host github
HostName github.com
User UserName
identityFile ~/.ssh/id_rsa
User git