複数のGitHubアカウントをSSH接続で切り替える方法
IT技術
はじめに
こんにちは!今回は複数のGitHubアカウントをSSH接続で切り替える方法についてブログにまとめてみました!
切り替え自体は簡単にできるのでプライベートアカウントと業務アカウント両方使用したいと思っている方に参考になれば幸いです!
動作環境OSはmacOSでシェルはzshシェルを使用しています!
SSH用の公開鍵・秘密鍵を生成する
ホームディレクトリからsshディレクトリに移動しSSH接続で使用する公開鍵と秘密鍵を生成します!
ターミナルを起動し、以下のコマンドを順に実行します。
1#.sshディレクトリに移動
2cd ~/.ssh
公開鍵認証を既に使用しているGithubアカウントで実施している場合は、ホームディレクトリの直下に.sshディレクトリがあるはずです!
移動した後ssh-keygen -t rsaを実行します!
1#SSH用の公開鍵・秘密鍵を生成する。
2ssh-keygen -t rsa
すると以下のような質問が3つ出力されます。
上から順番に見ていくと
一つ目の
1Enter file in which to save the key
は生成するSSHの鍵のファイル名について質問されています。
注意点として過去に作成していた場合、異なるファイル名を命名しないと上書きされてしまうので
新しいファイル名になるように注意してください!今回はgit_test_rsaと命名しています!
2つ目と3つ目は秘密鍵を保護するためのパスフレーズを設定するか質問されています。
1Enter passphrase (empty for no passphrase):
2Enter same passphrase again:
セキュリティを高めたい場合はパスフレーズを設定します。
注意点としてはパスフレーズを忘れてしまうと秘密鍵を使用できなくなるので忘れないように注意する必要があります。
特に気にしない場合はEnterで大丈夫です!
これで鍵が生成されているのでlsコマンドで確認してみましょう!
生成した公開鍵をGitHubに渡す
先ほど生成したSSH用の公開鍵をGitHubに渡します!
以下のリンクでGitHubのSSHを設定する画面に遷移します!
https://github.com/settings/ssh
画面右上のNew SSH Keyボタンをクリックします。
するとこのような画面が表示されるため
Titleに公開鍵名、Key Typeはリポジトリへのアクセスが目的なためAuthentication Keyを設定。
最後にKeyですが、作成した公開鍵の中身を入れます!
以下のコマンドで公開鍵の中身をクリップボードにコピーできます!
1pbcopy < ~/.ssh/git_test_rsa.pub
configファイルにアカウント設定をvimで追記する
configファイルに切り替えるGitHubのアカウントの設定を追記するのですが
configファイルがない場合は以下のコマンドで作成します!
1touch config
作成したらvimでconfigファイルに設定を追記します!
1vi config
vimで開けることができたら入力モードにし
以下のように設定します!この辺りの設定に関してはご自由に設定してください。
1#メインアカウント
2Host github.com #任意のホスト名
3 HostName github.com
4 IdentityFile ~/.ssh/git_main_rsa #メインアカウントの秘密鍵のファイル
5 User git
6 Port 22
7 TCPKeepAlive yes
8 IdentitiesOnly yes
9
10#サブアカウント
11Host github-test #任意のホスト名
12 HostName github.com
13 IdentityFile ~/.ssh/git_test_rsa #サブアカウントの秘密鍵のファイル
14 User git
15 Port 22
16 TCPKeepAlive yes
17 IdentitiesOnly yes
HostNameに任意のホスト名を設定します!
IdentityFileには作成したアカウントごとの秘密鍵の場所を設定します!
以上の設定で、アカウントごとでの公開鍵認証を行うことができます!
最後に:wqで保存してvimを閉じます!
GitHubとの接続をsshコマンドで確認する
それぞれのGitHubアカウントに接続ができているか確認してみましょう!
接続に問題がなければホームディレクトリでssh -T [Host]コマンドを実行すると以下のような出力になります!
1#メインアカウントの接続を確認する
2% ssh -T github
3Hi [メインアカウントのユーザー名]! You've successfully authenticated, but GitHub does not provide shell access.
4
5#サブアカウントの接続を確認する
6% ssh -T github-test
7Hi [サブアカウントのユーザー名]! You've successfully authenticated, but GitHub does not provide shell access.
アカウントの切り替え
最後にGitHubアカウントの切り替えをコマンドでできるように~/.zshrcファイルに関数を追記します!
ホームディレクトリでvi ~/.zshrcを実行し、vim で.zshrcファイルを開きます。
1function gitmain() {
2 git config user.name "[メインのGitHubアカウント名]" || echo "Failed to set user.name"
3 git config user.email "[メインのGitHubのメールアドレス]" || echo "Failed to set user.email"
4}
5
6function gitsub() {
7 git config user.name "[サブのGitHubアカウント名]" || echo "Failed to set user.name"
8 git config user.email "[サブのGitHubのメールアドレス]" || echo "Failed to set user.email"
9}
エラーが発生した際にすぐ気づけるようにエラーチェックを加えています!
またgit config --global user.nameのグローバル設定ではなくローカル設定で実装しています!
違いのポイント
グローバル設定の特徴
影響範囲: ユーザー全体に適用。
用途: 複数プロジェクトで同じアカウントを使用する場合。
設定の場所: ~/.gitconfig に保存される。
利便性: シンプルで簡単に設定可能。ローカル設定の特徴
影響範囲: 現在のリポジトリにのみ適用。
用途: プロジェクトごとに異なるアカウントを使う場合。
設定の場所: プロジェクトの .git/config ファイルに保存される。
利便性: プロジェクトごとに手動で設定が必要だが柔軟性が高い。
初めはホームディレクトリで切り替えるコマンドを実行してエラーが出力されていましたw
ローカルで設定する場合はリポジトリに入ってから実行する必要があります!
関数についてはご自由に拡張してみてください!
また、~/.zshrcを修正し:wqで保存しただけでは追記した内容が反映されないため
1source ~/.zshrc
コマンドを実行する必要があります!
まとめ
今回は複数のGitHubアカウントをSSH接続で切り替える方法についてまとめてみました!
業務用と個人用で切り替えることが多々あるのでいい勉強になりました!
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
初めまして! たか と申します! 前職も同じくエンジニアとして働いておりました! 趣味は、映画・アニメを見たり、スポーツが好きです。 まだまだ未熟ですが、よろしくお願いします!