40
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SSH キーの複数管理の設定手順をまとめてみた

Posted at

エンジニアのみなさま、日々の学習本当にお疲れ様です!
また本記事まで足を運んでいただき本当に感謝です。
約3分程度で読めるので最後まで読んでもらえると幸いです。

はじめに

「複数のGitHubアカウントのSSH管理」を設定するにあたって理解が足りていない箇所があり、情報収集も少し手こずったため、備忘も兼ねて手順をまとめてみました。

前提

  • Macの操作手順
  • 既にGitHubアカウントAで秘密鍵・公開鍵が設定されている
    • 秘密鍵ファイル名:id_ed25519
    • 公開鍵ファイル名:id_ed25519.pub
  • ssh用のconfigファイルは既に作成されている
  • GitHubアカウントBの秘密鍵・公開鍵は未設定
  • GitHubにて「アカウントBの登録」と「リモートリポジトリの登録」は出来ている
  • リモートリポジトリに紐付けるローカルリポジトリも存在する
  • 管理したいGitHubアカウントBのメールアドレスは「hoge@fuga.hoge」、秘密鍵のファイル名は「id_ed25519-account-b」とする

手順

①アカウントB用の公開鍵と秘密鍵を作成する

ターミナル
ssh-keygen -t ed25519 -C "your_email@example.com" -f <秘密鍵のファイル名>

# 今回のケースの場合
ssh-keygen -t ed25519 -C "hoge@fuga.hoge" -f id_ed25519-account-b

-fをつけない場合「id_ed25519」と「id_ed25519.pub」ファイルが生成されます。
今回の場合は既に上記2ファイルが存在するため、上書きしても良いか聞かれます。
必ず-fをつけてGitHubアカウントB用の秘密鍵・公開鍵ファイルを作成しましょう。
以下のコメントが表示されるので、Enterを押します。

ターミナル
> Enter a file in which to save the key (/Users/YOU/.ssh/id_ALGORITHM): [Press enter]

以下のコメントが表示されるので「Enter2回」 もしくは 「好きなパスフレーズを2回入力」します。セキュリティを強化するには後者を選択しましょう。

> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

以下コマンドでファイルが生成されているかを確認します。

ターミナル
cd ~/.ssh
ls
ssh内
# GitHubアカウントA用のファイル
id_ed25519 id_ed25519.pub

# 以下2ファイルが新たに生成される
id_ed25519-account-b id_ed25519-account-b.pub 

②SSH キーをssh-agentに追加する

$ eval "$(ssh-agent -s)"
> Agent pid <ランダムな値が生成される>

上記コマンド後、以下コマンドでconfigファイルを開き、GitHubアカウントB用の設定を追加します

open ~/.ssh/config
configファイル

# GitHubアカウントA用の設定
Host github-account-a
  HostName github.com
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519


# 以下、GitHubアカウントB用の設定を追加する
+ Host github-account-b
+  HostName github.com
+  User git
+  AddKeysToAgent yes
+  UseKeychain yes
+  IdentityFile ~/.ssh/id_ed25519-account-b

上記、GitHub用Bの設定を追加後、catコマンドで生成したファイルの中身を確認してみましょう。

ターミナル
cd ~/.ssh
cat id_ed25519-account-b
id_ed25519-account-bファイル
-----BEGIN OPENSSH PRIVATE KEY-----
<秘密鍵の内容が記載されている>
-----END OPENSSH PRIVATE KEY-----

id_ed25519-account-bファイルの内容をssh-agent に追加して、パスフレーズをキーチェーンに保存します。

ターミナル
ssh-add --apple-use-keychain ~/.ssh/id_ed25519-account-b

③GitHubアカウントBへSSH キーを追加する

以下コマンドで公開鍵ファイル(id_ed25519-account-b.pub)の内容をコピーします。

ターミナル
pbcopy < ~/.ssh/id_ed25519-account-b.pub

コピー後、GitHubアカウントBにある「Settings」をクリックする

スクリーンショット 2024-07-15 16.12.09.png

手順① ~ ⑤を実施する

スクリーンショット 2024-07-15 15.05.50.png

スクリーンショット 2024-07-15 15.06.43.png

④リモートリポジトリの接続先を確認する

ターミナル
cd <対象のローカルリポジトリまで移動する>

# リモートリポジトリを確認する
git remote -v

# ssh/configで設定したHost名に変更する
git remote set-url origin github-account-b:<GitHubアカウント名>/<対象のリポジトリ名>

⑤SSHの疎通を確認する

ターミナル
cd <対象のローカルリポジトリまで移動する>

# リモートリポジトリを確認する
ssh -T github-account-b

> Hi <GitHubアカウント名>! You've successfully authenticated, but GitHub does not provide shell access.

さいごに

今回はSSH関連の理解を深める事ができました。
GitHubアカウント単体のSSH設定に関しては、GitHub公式の手順通り進めれば難なくできそうです。

この投稿が誰かの一助になれば幸いです...!

さいごまでご覧いただきありがとうございました!

参考記事

おまけ

唐突ですが弊社のご紹介もさせてください。

▼ コーポレートサイト

▼ Wantedly求人

弊社メンバーは学習した内容を日々Qiitaの記事にアウトプットしております。
弊社にご興味のある方、まずは求人を見てみてください!
ご応募お待ちしておりますー!

40
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?