くま's Tech系Blog

基本的には技術で学んだことを書き留めようと思います。雑談もやるかもね!

GithubにSSH接続できるようにする

今回はGithubSSH接続できるように設定していきます。

①なぜ?

Http形式やHttps形式などGithubで使える通信規格は何種類かあります。 一般的にはHttp形式やHttps形式が有名ですが、なぜSSH形式なんでしょうか?

SSHプロトコルを使うと、リモートサーバーや各種サービスへの接続や認証が可能になります。SSHキーを使うと、GitHubとの接続のたびにユーザー名やパスワードを省略できます。

Https形式だと例えば、pushするたびにユーザー名とパスワードが必要になり、かなりの手間がかかります。

SSHの設定をすれば、パスワードによる認証を一切無効にして、鍵での認証のみにするといったことがよく行われます。

②鍵とは?

鍵とは「公開鍵」と「秘密鍵」です。ここでは簡単に解説してみます。

公開鍵と秘密鍵の2つの鍵を作ります。公開鍵は一般に公開するためのもの、秘密鍵は自分だけのものとします。

公開鍵で鍵をかけたものは、秘密鍵でしか開けられません。逆もまたしかりで、秘密鍵で鍵をすると公開鍵でしか開けられません。

Githubに登録する際には、自分の手で2つの鍵を作ります。秘密鍵は自分で保持し(他の人に見られてはいけません)、あらかじめ通信する相手、ここではGitHubに登録します。

GitHub側とクライアントPC側、双方がこれらの鍵を使って認証や暗号化通信を行います。

Githubに登録する手順

まずは、公開鍵と秘密鍵のペアを作成します。

$cd ~/.ssh

鍵を入れるフォルダに移動します。

$ssh-keygen -t rsa

そして、鍵を生成します。

パスワードを聞かれたらエンターを押すと、「id_rsa」(秘密鍵)と「id_rsa.pub」(公開鍵)の2つの鍵が生成されます。

Your identification has been saved in (特定のパス)/.ssh/id_rsa_github.
Your public key has been saved in (特定のパス)/.ssh/id_rsa_github.pub.
The key fingerprint is:
SHA256:【略】 your_email@example.com
The key's randomart image is:
+---[RSA 4096]----+
...(snip)...      
+----[SHA256]-----+

そして、公開鍵をGithubにアップします。

https://github.com/settings/ssh

で公開鍵の設定が出来ます。

「New SSH Key」をクリックし、登録画面に移動します。

f:id:kumaskun:20191020191235p:plain

「Title」に公開鍵名、「Key」に公開鍵の中身を入れます。

ファイルの中に羅列された文字列をコピペしてアップロードします。

なお、鍵の中身のクリップボードへのコピーは下記コマンドで行えます。

Macの場合

$ pbcopy < ~/.ssh/id_rsa.pub 

Windowsの場合

$ clip < ~/.ssh/id_rsa.pub

これでペーストできるようになります。

もしできなければ、下記コマンドでKeyを確認できるので(長い文字列が表示されるはず)、コピペでも問題ありません。

$ vim ~/.ssh/id_rsa.pub

入力後は「Add Key」ボタンで登録したら完了です。

④接続確認

下記コマンドで確認します。

$ ssh -T git@github.com

「Hi (account名)! You've successfully authenticated, but GitHub does not provide shell access.」と返ってきたら成功です!

手順としてはそこまで大変ではない上に毎回手間がかかる入力が省けるので、ぜひ試してみてください!

【追記】 実際にGithubからクローンする場合は、下記コマンドでパスワードの省略ができます。

$ git clone (Githubに記載されているSSH用のURL)

参照

Githubヘルプ