OpenSSHでKey-Pairを生成 ssh-keygenコマンドでキーペアを生成する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 PS > ssh-keygen -t rsa -C XXXXXXX@XXXXXXX -f XXXXXXX.key Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in XXXXXXX.key. Your public key has been saved in XXXXXXX.key.pub. The key fingerprint is: SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXX @XXXXXXX The key 's randomart image is :+---[RSA 2048]----+ | oo ...o =+B | | . . ox =ox *| | o ...X +++ | | xxxxx + | | oSxxx =o | | . = =.+. | | . .o | | . . | | .. | +----[SHA256 ]-----+
GitHubへ公開鍵を登録 SSH and GPG keys - SSH Keys - New SSH Key
作成した公開鍵XXXXXXX.key.pub
の内容を登録する。
ここでは他のアカウントで使用している公開鍵を登録できない。
OpenSSHで複数のGitHubに接続する設定 sshのconfigファイルを修正 Windowsの標準のssh設定フォルダー(C:\Users\ログインユーザ名\.ssh
)にあるconfig
ファイルを以下のように構成する
1 2 3 4 5 6 7 8 9 10 11 12 13 Host github-USER_X HostName github.com User git IdentityFile ~/.ssh/USER_X/priv.key IdentitiesOnly yes AddKeysToAgent yes Host github-USER_Y HostName github.com User git IdentityFile ~/.ssh/USER_Y/priv.key IdentitiesOnly yes AddKeysToAgent yes
キーペアの接続テスト デフォルトパスで1つのみ使用する場合はssh -T git@github.com
で接続確認ができるがエラーになる デバッグはssh -vT git@github.com
のようにv を付けることで詳細が出力される
1 2 PS > ssh -T git@github.comgit@github.com: Permission denied (publickey).
使用するアカウントを指定する必要があるのでconfig
で指定したHostに接続する
1 2 PS > ssh -T github-USER_X Hi USER_X! You've successfully authenticated, but GitHub does not provide shell access.
set-urlで接続先を変更 このままではgitコマンド コマンドを使用した際に接続エラーとなるため、接続先の切替を行う。
1 2 3 4 5 6 7 PS > git remote -v origin https://github.com/XXXXXXXX/app-repo .git (fetch) origin https://github.com/XXXXXXXX/app-repo .git (push) PS > git remote set-url origin git@github-USER_X :USER_X/app-repo .gitPS > git remote -v origin git@github-USER_X :USER_X/app-repo .git (fetch) origin git@github-USER_X :USER_X/app-repo .git (push)
新しいリポジトリ作成時の初期設定 新しリポジトリ作成時は以下の設定を行う
1 2 3 4 5 6 7 8 9 10 PS > git clone https://github.com/<GIT_ACCOUNT>/<GIT_REPOSITORY_NAME>Cloning into '<GIT_REPOSITORY_NAME>' ... remote: Enumerating objects: 3 , done. remote: Counting objects: 100 % (3 /3 ), done. remote: Compressing objects: 100 % (2 /2 ), done. remote: Total 3 (delta 0 ), reused 0 (delta 0 ), pack-reused 0 Unpacking objects: 100 % (3 /3 ), done. PS <GIT_REPOSITORY_NAME>> git config --local user.name <GIT_ACCOUNT>PS <GIT_REPOSITORY_NAME>> git config --local user.email <E-Mail >PS <GIT_REPOSITORY_NAME>> git remote set-url origin git@github-<GIT_ACCOUNT>:<GIT_ACCOUNT>/<GIT_REPOSITORY_NAME>