Githubにssh接続するとき、つまづくポイント

Githubにアカウントを作る。
そしてリポジトリも作った。あとはcloneやpushをしていくだけ。
接続するにはhttp接続か、ssh接続を選択することが可能。
https接続はgithubのIDとパスワードがわかればどの端末からでもアクセスできてしまう。
ssh接続は公開鍵、秘密鍵の仕組みから、限られた端末からしかアクセスできないようにできる。
よりセキュアに開発するためにはSSH接続を採用するべきだろう。
・公開鍵とは暗号化するために使う
・秘密鍵は複合するために使う
公開鍵は中身がバレてもそれほど影響はないため、Githubには公開鍵を登録しておく。
Githubに限らず、XserverやBacklogといったSSH接続をする場合はサーバ側に公開鍵を登録する。
秘密鍵は絶対に外に置かないこと。自分の端末内(一般的には./sshとか)に置いておく。
公開鍵と秘密鍵を作る
作り方の参考例は色々なサイトに存在するので詳しくは記載しない。
作業場所に移動(存在しない場合はmkdir ~/.sshでディレクトリを作る)
cd ~/.ssh
鍵を作る
ssh-keygen -t rsa
Enter file in which to save the key (/Users/xxxxx/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): (パスフレーズを入力)
Enter same passphrase again: (もう一度入力)
デフォルトで進めるとid_rsa(秘密鍵)とid_rsa.pub(公開鍵)ができていることが確認できる
※lsコマンドで確認しておく
catコマンドでid_rsa.pubの中身を見て文字列をコピペしておくのも良いけど、pbcopyコマンド使えばクリップボードに保存してくれるから便利
pbcopy < id_rsa.pub
Githubに公開鍵を登録
Githubのユーザアイコンから「Settings」を選択

「SSH and GPG keys」を選択して「New SSH Key」ボタンを押下

titleにわかりやすい名前を記述して、Keyに先程コピーしたid_rsa.pubの内容をペーストする。

これでGithubの設定は完了。
実際にGitリポジトリに接続
ここまで設定が完了すればSourceTreeなどのGit管理ツールから実際にcloneすれば良いのだが、
すんなり接続できるケースは少ない。
なので疎通確認をコマンドでしておく。
ssh -T git@github.com
疎通結果が確認できるのと同時に、これをやっておかないとSourceTreeで疎通ができなかったりする。
(おそらくはsshしておくことでknown hostsに登録され、SourceTreeはデフォルでそこを見てるのかもしれない)
configファイルに接続情報を登録する
gitの接続情報は~/.ssh/configに書いておく
Host github.com.main
HostName github.com
User username
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
Host github.com.sub
HostName github.com
User username
IdentityFile ~/.ssh/id_rsa_sub
IdentitiesOnly yes
この例はgithubアカウントを2つ持っている場合の例。
HostNameはgithub.comにしておき、Hostを別々の名前にしておくのがポイント。
Gitに接続する際、GitはconfigのHostを順に参照していると思われる。書いておくと便利。
2021.09.22 追記
複数のgithubアカウントを使う場合は
IdentitiesOnly yes
これを絶対に設定しておくこと。
IdentitiesOnlyを指定していない場合はデフォルトのnoが設定される。
IdentitiesOnly
yes: configファイルに指定されたキーファイルのみ使用するかの設定
no: すべての秘密鍵をためそうとする。そのため、意図したgithubアカウントに接続ができないことがある。(ハマる)
Githubのアカウントが複数の場合のcloneのやり方
例えば、以下のgitのURLがあるとする。
git@github.com:hoge-org/hoge-pj.git
これがメインの方のアカウントであれば疎通URLは
git@github.com.main:hoge-org/hoge-pj.git
サブであれば
git@github.com.sub:hoge-org/hoge-pj.git
とする。これができるのは↑のconfigファイルでHostを定義しているから。
プライベートと仕事用でGithubアカウントを分けてる人なんかは良いかも。
意外にも情報が少なくてハマったポイント。
まとめ
どこで誰と、どんなプロジェクトでアサインされようと今はGitがあたりまえに導入されている。
5年前くらいだとまだGitを使ってないプロジェクトも多くあったけど、今では常識になってしまってる。
必ずしも複数人での開発でなくても、個人でもソース管理をするためにGitは役に立つ。
なので週末とかでも個人アカウントを作ってGitの一通りのコマンドは試してみたりして知見を深めておくことは重要だろうな。
ディスカッション
コメント一覧
まだ、コメントがありません