一、背景#
同じコンピュータで複数の GitHub、gitee、gitlab アカウントを使用する必要がある場合や、複数のアカウントを持っていて公開鍵を生成するのが面倒な場合、git の複数アカウント設定が必要になります。
二、準備#
環境:Windows 10、git
使用する前に git をインストールする必要があります。git のインストールは「次へ」をクリックするだけで完了しますが、git コマンドについてもある程度の理解が必要です。
前提条件:C:\Users\nxg.ssh ディレクトリ(フォルダー)が必要です。git bash を開いてください。
以下の図のように:
開いたらこのインターフェースを使用します:
** 注意:** このパス C:\Users\nxg.ssh は、基礎知識がある人には上の図から理解できると思いますので、詳しくは説明しません。
なぜこのステップを最初に実行するのかというと、config ファイルを作成し、鍵を生成する際にはこの **.ssh** ディレクトリ(フォルダー)内で作成する必要があるからです。他のディレクトリで開くと、ファイル作成時のパスの問題を考慮する必要があります。わかりやすくするために、上記の方法で操作することをお勧めします。
三、設定#
3.1 config ファイルの作成#
C:\Users\nxg.ssh ディレクトリ(フォルダー)内に config ファイルを作成し、ssh key のルーティングポリシーを設定します。
config ファイルを作成:
touch config
config ファイルに設定:
# GitHub
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
User git
# Github2
Host github2
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github2
User git
# gitee
Host gitee.com #自分のコード雲アドレス
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitee
User git
効果は以下の図のようになります:
“#” はコメントを示します
Host の後は名前で、自由に書けます。別名を付けるようなものです。各 Host は 1 つのリポジトリを表し、リポジトリのパラメータは新しい行に書き、前に 4 つのスペースを入れます。
HostName : 実際に接続するサーバーのアドレスです。ssh の host、SSH アドレス「git@」の後からコロンの前までの内容です。
User
:カスタムユーザー名で、一般的には「git」を使用します。
PreferredAuthentications
:どの方法で認証を優先的に使用するかを指定します。パスワードと鍵の認証方式をサポートしています。「publickey」を使用すれば、git リポジトリはすべてこの形式です。認証 --publickey,password publickey,keyboard-interactive などに設定できます。
IdentityFile
:この接続で使用する鍵ファイルを指定します。この host のバックエンドで設定された公開鍵に対応する秘密鍵の絶対パスです。
Port : SSH のデフォルトポート番号は 22 で、一部のプライベートデプロイの git リポジトリはポート番号を変更することがあります。
3.2 グローバル設定#
github を例にとります:
# global全体設定、ここではグローバル設定を使用
# ユーザー名を設定:
git config --global user.name 'abc'
# メールアドレスを設定:
git config --global user.email "[email protected]"
#鍵をローカルに追加、つまり鍵を生成します
ssh-keygen -t rsa -C "[email protected]"
#同様にgiteeアカウントもこのように操作します。
注:ここでの abc は GitHub のユーザー名、[email protected]はあなたが GitHub にバインドしたメールアドレスです。
以下の図の効果:
gitee の設定効果は以下の図のようになります:
注意:生成した鍵ファイルはここで保持する必要があります。
接続成功のテスト#
GitHub に接続できたかテストします:
ssh -T git@github2
成功の効果:
Hi abc! You've successfully authenticated, but GitHub does not provide shell access.
Gitee に接続できたかテストします:
$ ssh -T [email protected]
成功の効果:
Hi nxg! You've successfully authenticated, but GITEE.COM does not provide shell access.
注意事項:
四、GitHub の関連付け#
id_rsa_gitee.pub ファイルの内容を gitee の設定内の SSH 公開鍵に追加します。
id_rsa_github2.pub ファイルの内容を GitHub の設定の SSH and GPG keys の SSH 公開鍵に追加します。
注:上記のファイルはすべてここにあります。
効果は以下の図のようになります:
注意#
複数のアカウントを設定する方法はいくつかあります。ファイルを直接編集する方法やコマンドを使用する方法があります。
ここではファイルを編集する方法を使用します。
まず、C:\Users\nxg パス内で **.gitconfig** ファイルを見つけて開きます。
注意:直接ダブルクリックして開かないでください。開く方法を選択し、テキストで開くか、他の編集ツールで開いてください。
.gitconfigファイルの内容:
[user]
name = xiaoli
email = [email protected]
[core]
autocrlf = true
[http]
sslVerify = false
[user]
name = abc
email = [email protected]
[core]
autocrlf = true
[http]
sslVerify = false
効果は以下の図のようになります:
アカウントリストの確認:#
git config --global --list
効果は以下の図のようになります:
鍵の追加方法#
方法 1:
ssh-keygen -t rsa -C "[email protected]"
次にid_rsaを実行します。
方法 2:
ssh-keygen -t rsa -C "[email protected]" -f ~/.ssh/id_rsa
効果は以下の図のようになります:
ssh-keygen の一般的なパラメータ説明:
-t: 鍵のタイプ、dsa | ecdsa | ed25519 | rsa から選択できます。
-f: 鍵のディレクトリ位置、デフォルトでは現在のユーザーのホームパス下の.ssh 隠しディレクトリ、つまり~/.ssh/ です。デフォルトの鍵ファイル名は id_rsa で始まります。root ユーザーの場合は /root/.ssh/id_rsa、他のユーザーの場合は /home/username/.ssh/id_rsa です。
-C: この鍵の備考情報を指定します。複数のパスワードなしログインを設定する場合は、持っていることをお勧めします。
-N: この鍵ペアのパスワードを指定します。このパラメータを指定すると、コマンド実行中にパスワード確認のインタラクションが表示されません。
例を示します:ディレクトリ位置、パスワード、注釈情報を同時に指定すると、Enter キーを押さずに作成を完了できます。