sshとそのconfigファイル(~/.ssh/config
)を正常に設定できれば造作もないことかも知れないが、とても設定で困ったので書く。
普段は、個人のアカウントでGitHubにアクセスしているが、独立環境にGitHubEnterprise(以降、GHEと呼称する)が構築され、そちらに対してもアクセスする必要ができた。
どちらも、セキュリティの観点からMFAを設定している。
そのため、ssh-keyを二つ生成して、それぞれにアクセスできるようにしたかった。
今回はmacOS Big Sur
で実施したため、Linux系は同様の設定で良いと思います。
Windows10の場合は後々やってみようと思います。
やりたいこと
- MFA設定済みのGitHub.アカウントで、GitHub.comにSSHアクセスできるように設定をする。
- MFA設定済みのGitHubとは異なるGHEアカウントで、独立環境のGHEにアクセスできるように設定する。
- 以下のところでSSHをコピー&ペーストするだけでcloneできるようにする
# git clone git@github.com:hogehoge/hogehoge.git
# git clone git@[GHE独立環境のドメイン]:hogehoge/hogehoge.git
環境に関する情報
- 作業マシン:MacbookPro2018 IntelCPU
- 個人のGitHub.comアカウント
- 独自環境に構築したOSS型GitHubEnterprise(要は仕事用環境)
ssh-keyの生成をする
以下の通り、鍵の生成を実施した。
- GitHub向けの秘密鍵
github
と公開鍵github.pub
- GHE向けの秘密鍵
ghe
と公開鍵ghe.pub
~/.ssh ❯❯❯ ls
config ghe ghe.pub github github.pub id_rsa id_rsa.pub known_hosts
configファイルの編集
以下の通り記述しました。
# GitHub Enterprise 独立環境GHEのアクセス用の設定
Host [gheのURL]
User git
IdentityFile ~/.ssh/ghe
# GitHub 個人のGitHubアクセス用の設定
Host github.com
User git
IdentityFile ~/.ssh/github
注意:
環境数だけHostを書く。
- Host:
- ドメイン名を書くのです。そうしないと、GitHubやGHEのCloneページからコピー&ペーストで正常に秘密鍵を選択してアクセスしてない。
- User:
-
git
と必ず書きましょう。コピーする文のgit@
の部分と一致させるのです。
-
- IdentityFile:
- それぞれに合わせて生成した秘密鍵のパスを書くのです。
公開鍵をそれぞれに登録
公開鍵ファイルの中身それぞれに合わせて登録する。
接続テスト
GitHubなら
# ssh -T git@github.com
成功すると
Hi [GitHubのUserName] You've successfully authenticated, but GitHub does not provide shell access.
となる。
GHEなら
# ssh -vT git@[gheのURL]
成功すると
Hi [GHEのUserName] You've successfully authenticated, but GitHub does not provide shell access.
となる。
もし失敗した場合は、
# ssh -vT git@[接続先]
でデバッグメッセージを出力させて、想定している秘密鍵が選択されてアクセスしているかなど確認する。
さあ、Cloneしよう
きっとできるはずだ。勇気を出して。