GitHubにSSH接続できるまでの大まかな流れ
公開鍵、秘密鍵をterminalで生成
→公開鍵をGitHubのKey設定に登録
→ローカルにある秘密鍵をつかって、GitHubにSSH接続
という流れです。
GitHubとは
まずGitHubって知ってるし、知ってるから検索して記事見てるんだわwって感じですが、
一応、一方的にかつ形式的に説明
GitHubとは、ソースコードやデザインデータを保存・公開できる管理サービスのひとつ
便利ですねぇ〜
似てるサービスには、GitLabってありますね
SSHとは
SSHとは、Secure Shellの略で、SSH接続とは、安全にリモートコンピューターを遠隔操作をする枠組みの一種。
パスワード認証方式と公開鍵認証方式の2つが代表的で、SSHの設定方法により選択が可能
| 項目 | パスワード認証方式 | 公開鍵認証方式 |
|---|---|---|
| 方法 | パスワード | 公開鍵 |
| 安全レベル | 低め | 高め |
| 設定の難しさ | 簡単 | 複雑 |
| 推奨度 | △ | ◎ |
今回は、公開鍵認証方式でいきますかっ
1. ターミナルで秘密鍵・公開鍵の生成コマンドを実行
※$はターミナルで見る一番右端のやつですね。
$cd ~/.ssh
$ssh-keygen -t rsa
<解説>
実は隠しフォルダとして、
MacのFinderのHOME(/Users/username/)のディレクトリには、.sshというフォルダが存在していて、
実際に、GUIのホームディレクトリ上で確認したい場合は、
command(コマンド) + shift(シフト) + .(ドット)
のショートカットキーを押すと、出現する。
(いやいや、わざわざ隠しているなら、自分から見つければいい、、、)
つまり、terminal上でその.sshフォルダに移動し、そこで、
ssh-keygen -t rsa
というコマンドを打ったということになる。
keygenはkey generateの意味を指し、鍵生成コマンド。
-tはオプションで、 生成する鍵の種類を指定できる。(参考URL)
rsaというのは、鍵の種類で、rsaという暗号アルゴリズムを用いて作った鍵だよってこと
2. 鍵が生成される
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:
のように表示され、Enterを推し進めると、生成される。
<解説>
デフォルトの鍵の名前は、id_rsaとなっていて、
もし生成時に名前をつけたい場合は、Enter file~の箇所で、適当な名前をつける。
(今回は、id_github_rsaという名前で進めちゃいます)
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):id_github_rsa←ここで名前を指定する
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
注意事項
デフォルトの鍵名id_rsaで作った時に、初回は問題ないが、
次回鍵を作る時に、また同じデフォルト名id_rsaで作成してしまうと、
鍵自体が更新されてしまい、問題となるので、名前をつけることをオススメします。
また、鍵名と同様に、passphraseを設定したい場合は、適当に設定。
合言葉みたいなもので、設定すると、passphraseを入力しないと、公開鍵が出力できなくなります。
ちなみに、rsaファイルの権限を読取に変更すると良き◎
所有者には、読取権限だけを付与して、
ファイル自体に制限をかけておくと、セキュリティレベルが上がるのでオススメ
$ chmod 400 ~/.ssh/id_github_rsa ※400は 所有者は読み取りOK, グループ, その他は禁止
$ chmod 400 ~/.ssh/id_github_rsa.pub
3桁の番号があるが、左から、所有者の権限、グループの権限、その他の権限という設定になる。
上記コマンドは、認証鍵に、所有者だけ読込権限を付与ということになる。
3. ~/.ssh/configファイルに、鍵の用途を記述する
鍵を作る時に名前を指定した時は、configファイルに記述します。
※デフォルトではid_rsaという名前の鍵を読みにいくので、もしconfigファイルに名付けた鍵の設定をしないと、SSH接続に失敗してしまう。
$vi ~/.ssh/config
を打って、configファイルの中身をみます。
i
を押して、vimをinsert modeに切り替えます。
(insertの頭文字のiですねえ)
Host github github.com
HostName github.com
IdentityFile ~/.ssh/id_github_rsa
User git
そして、上記をコピペ。
次に、下記の上書き保存のコマンドを打って、Enterを押す
:wq
これで、変更点を保存して、vimから抜けられます。
※vimとは、いわゆるterminal上でファイル内容を編集する時に使うモード みたいなものです。
※参考までに
| コマンド | 挙動 |
|---|---|
| :q | 無編集の状態でvimを閉じる。 |
| :q! | 変更内容を破棄して終了 |
<解説>
-
Host github github.comのgithubはailias(エイリアス)、つまり、あだ名です。 - SSH接続する時に、あだ名を使って接続できるようになります。
-
HostNameは、どのホストに接続するか指定します。今回はgithub.comですねえ -
IdentityFileは、秘密鍵のファイルを絶対パスで指定します。 -
Userはユーザー名を指定します。
4. 生成した公開鍵をGitHubのSSHキー設定に登録
GitHub Key設定ページにアクセスして、New SSH keyをクリック。

すると、次のページに遷移するので、
タイトルに使っている「鍵の名前+.pub」と入れて、

Keyには、id_github_rsa.pubの内容をコピペする。
下記、コマンドを使えば公開鍵の内容をコピーできます。
$pbcopy < ~/.ssh/id_github_rsa.pub
注意事項
決して、.pubじゃない方の内容をコピペしないこと。
それは秘密鍵なので、なんでも不正利用されてしまいます。
秘密鍵から公開鍵は生成できてしまうので、、、きをつけましょう!!!!!!!
5. いざ、接続!!頼むよ〜
$ssh -T git@github.com
えいっ
Hi GitHunUserName! You've successfully authenticated,
but GitHub does not provide shell access.
と表示されれば、完了です。
GitClientから接続できます。クローン、プルも自由自在です。
個人的なオススメ: GitFork
<解説>
-
sshは、ssh接続します のコマンド -
-Tは、オプションで、**仮想端末の割り当てを禁止します。**という意味で、今回は、中間的な踏み台の仮想環境を通して、github.comにはアクセスしないから、仮想端末を割り当てる必要がないということで、このオプションをつけている -
git@github.comは、configに設定した、UserとHostNameを、次の形User@HostNameでくっつけたもの。
$ssh -T github
でも接続できます!