この記事について
自分用です。
SSH接続を久しぶりに使おうとしたら忘れてしまったので備忘録。
GitHubとGitLabそれぞれの鍵を生成し、どう設定ファイルを書けばいいのかメモする。
環境
MacBookPro Catalina
前提知識
-
~/.ssh
内にSSH関連のファイルがある -
基本的に、known_hosts、秘密鍵、公開鍵、configという4つのファイルがある。
$ ls ~/.ssh
流れ
- 鍵(秘密鍵と公開鍵)を作る
- 設定ファイルを書く
- 接続コマンドを実行して、接続を確認する。
鍵を作る
ssh-keygen
コマンドを使う。
-f
はファイル名で、例えばgithub用の鍵を生成しようと思ったら、わかりやすい名前を書く。
ここではid_rsa_github
とする。
$ ssh-keygen -t rsa -f id_rsa_github
すると~/.ssh
に公開鍵id_rsa_github.pub
と秘密鍵id_rsa_github
が生成される。
公開鍵id_rsa_github.pub
はGitHubのページに、秘密鍵id_rsa_github
は~/.ssh/config
内の設定で記述する。
今回は、github用とgitlab用で、複数個の鍵ペアを作るから、フォルダ分けしておく。
$ cd ~/.ssh
$ mkdir for_github
$ mv id_rsa_* for_github/
設定ファイルを書く
~/.ssh/config
内に設定を書いていく。
このファイルはgithubとgitlabで分ける必要はない。
複数の設定を一つのファイルに書くことができるので、~/.ssh
に置いておく。
以下のように内容を記述する。
Host github
HostName github.com
User git
identityFile ~/.ssh/for_github/id_rsa_github
分かりやすいように、
① Host github
② HostName github.com
③ User git
④ identityFile ~/.ssh/for_github/id_rsa_github
としよう。
Host、HostName、User、identityFile以外にも設定できるけど、今回はこの4つだけ説明。
最終的にこのあと、
$ ssh -T github
というコマンドを打って、接続を確認する。
この時の-Tの後のgithubが①Hostで設定したものに対応している。
ここではgithubにしてるけど、分かりやすい名前であればなんでもいい。
どこに繋ぐかというと、
User@Hostname
すなわち、
git@github.com
に接続しようとする。
GitHubでもGitLabでもいいが、マイページで自分のリポジトリをCloneするときにコピーする文字列が、git@github.comで始まっていると思う。
githubに繋ぐんだったら、全ユーザ、②と③の設定で良い。
④identityFileは、秘密鍵。.pub
がついてないid_rsa_github
を指定する。
接続コマンド
上記でも説明したが、
$ ssh -T github
GitLabも同じように設定していく
$ cd ~/.ssh
# 先にディレクトリを作成してその中に鍵ファイルを作る。
$ mkdir for_gitlab
$ ssh-keygen -t rsa -f for_gitlab/id_rsa_lab
# GitLabのマイページで公開鍵(.pub)の中身を追加
$ vi -b ~/.ssh/config
以下のように、中身を追加していく。
Host github
HostName github.com
User git
identityFile ~/.ssh/for_github/id_rsa_hub
Host gitlab
HostName gitlab.com
User git
identityFile ~/.ssh/for_gitlab/id_rsa_lab
# 接続確認
$ ssh -T github
$ ssh -T gitlab
メモ
1回目の接続では、本当に繋いでいいですか?という確認のメッセージが出る。
1度繋いだら~/.ssh/known_hosts
に記録され、2回目以降はメッセージが出なくなる。