#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
でも接続できます!
#まとめ
###やったぁぁぁぁぁぁぁぁぁぁぁぁあああああああああああああ!!!!