この記事ではGitをSSHで接続する方法について解説します!Gitには色々な方法で接続をすることが出来ますが、GitHubなどのサービスを使うときはSSHで接続する方法が主流です。
SSH接続をするためのキーの作り方を知りたい。
GitHubでSSH接続をしたい。
といった方に向けてこの記事では、
- SSHとは
- SSHで接続する意味
- 公開鍵と秘密鍵を生成する方法
- GitHubにSSHを登録する方法
について解説していきます。SSHについて分からない方も、ぜひこの記事を参考にして接続してみてください!
SSHとは
まずはSSHとは何かについて知っておきましょう。SSH(Secure SHell)はネットワークを経由してマシンを遠隔操作する仕組みのことで、通信が暗号化されているのが特徴的です。
主にクライアント(ローカル)からサーバー(リモート)に接続をするときに使われます。このSSHの暗号化について、仕組みを見ていく上で重要になるのが秘密鍵と公開鍵です。
まずはクライアントのマシンで秘密鍵と公開鍵を作り、公開鍵をサーバーに渡します。そしてサーバー側で「この公開鍵はこのユーザー」というように、紐付けを行っていきます。
複雑な過程は省きますが、自分で管理して必ず見せてはいけない秘密鍵と、サーバーに渡して見せても良い公開鍵の2つがSSHの通信では重要になってきます。
GitやGitHubにSSHで接続をする意味
ではなぜGitやGitHubでSSH接続をするのでしょうか。GitHubではリモートリポジトリと通信をするときに、http,https,git,sshの4種類のプロトコルを使うことが出来ます。
httpは通信が暗号化されていないのであえて使う意味は無いのですが、httpsでは暗号化がされ、GitHubの推奨プロトコルでもあります。またhttpやhttpsの方が高速で、クローンも高速に行うことが出来ます。
しかしSSHには、仕組みが比較的分かりやすく、なおかつ一般的なアクセスには困らないというちょうど良さがあります。
それだけ? と思うかもしれませんが、GitHubにアクセスをする方法についての解説記事ではSSHを使った解説のほうが多いことも要因と言えるでしょう。
GitHubを使わなくても、Gitを自社環境で用意する場合はSSH接続のほうが遥かに楽(公開鍵を渡してアドレスを教えてもらうだけ)という点もSSHが使われる理由の一つになります。
SSHの公開鍵と秘密鍵を生成する方法
それでは早速、SSHの公開鍵を秘密鍵を生成してみましょう。
※ここではUnix系のコマンドを使うので、Macの環境を想定しています。このコマンドを実行して、ディレクトリを移動しましょう。
cd ~/.ssh
このcdコマンドでは、「/Users/username」という現在のディレクトリ(カレントディレクトリ)から、「.ssh」という隠しディレクトリに移動をしています。無い場合はmkdirコマンドで作っても構いません。
mkdir ~/.ssh
このディレクトリには何もないことを、lsコマンドで確認してみましょう。
ls
次にこのコマンドで鍵を生成しましょう。
ssh-keygen -t rsa
「ssh-keygen」というコマンドで、RSAという方式の暗号鍵を作っています。実行すると、「名前はどうするか?」、「パスフレーズはどうするか?」、「パスフレーズをもう一度入力」、などについて3回ほど聞かれます。
特にこだわりが無ければすべてEnterを押して飛ばしてもらっても構いません。これで先ほどと同じようにlsコマンドで「~/.ssh」を見てみましょう。
id_rsa id_rsa.pub
先程に名前を変えなければ、このようなファイルが出来ているかと思います。このファイルで、「id_rsa」が秘密鍵、「id_rsa.pub」が公開鍵になっていて、公開鍵の方をGitサーバーやGitHubに送ることでSSH接続が出来るようになります。
GitHubにSSHを登録する方法
それでは先程出来たSSHの公開鍵をGitHubに登録しましょう。こちら(https://github.com/settings/keys)のページにアクセスしてみましょう。
このページのSSH keysにあるNew SSH keyから公開鍵をアップロードすることで公開鍵を登録することが出来ます。
ただアップロードは直接ファイルをアップロードするのではなく、ファイルの中に羅列された文字列をコピペしてアップロードします。そこでこちらのコマンドを実行しましょう。
pbcopy < ~/.ssh/id_rsa.pub
このコマンドを実行することでクリップボードに文字列がコピーされます。⌘ + vでKeyに貼り付けると完了です。GUIのクライアントを使っている場合は、そのクライアントで鍵を指定するのを忘れないようにしましょう。
まとめ
この記事ではSSHとは何かについて、SSHキーの生成方法、GitHubに公開鍵を登録する方法について解説してきました。SSHとGitHubの関係については分かって頂けたでしょうか?
SSHはGitやGitHubだけでなく、様々なサーバーに対しても使うことが出来ます。気になる方はぜひ調べてみてください!