異なるアカウントとホストで複数の SSH キーを使用する方法

異なるアカウントとホストで複数の SSH キーを使用する方法

私は複数のSSHキーを持っており、BitbucketとGithubにもアカウントを持っています。プルを使用するとエラーが発生します

:/var/www/proj$ git pull origin master
conq: repository access denied.
fatal: The remote end hung up unexpectedly

または、Bitbucket WebサイトにSSH接続すると、公開キーが拒否されたというエラーが発生します

:~$ ssh [email protected]
Permission denied (publickey).

これを解決して、異なるアカウントで異なるキーを使用するにはどうすればよいでしょうか。

答え1

これはすべてウェブサイトとstackoverflowから収集したものです。ssh初心者の皆さんのお役に立てれば幸いです。

複数のSSHキーを持つことができる

~/.ssh$ ls
yyy_id_rsa  yyy_id_rsa.pub  id_rsa  id_rsa.pub  known_hosts

注: ssh-agentに追加する必要があります。おそらくid_rsaが追加されるので、他の秘密鍵を追加する必要があります。

~/.ssh$ ssh-add yyy_id_rsa

これで両方のsshキーがssh-agentに追加されました

1つはBitbucket用、もう1つはGithub用です

次のような設定ファイルを作成します

~/.ssh$ nano config
Host bit-yyyuser bitbucket.org
Hostname bitbucket.org
IdentityFile ~/.ssh/yyy_id_rsa
User yyyuser

Host bit-xxxuser bitbucket.org
Hostname bitbucket.org
IdentityFile ~/.ssh/id_rsa
User xxxuser

Host git-xxxuser github.com
Hostname github.com
IdentityFile ~/.ssh/id_rsa
User xxxuser

注: 私は、Bitbucket の 2 つの異なるアカウントに 2 つの異なるキーを使用し、github に 1 つのキーを使用しています。

ここで、特定のアカウントの特定のSSHキーを取得できるように、どのホストを使用するかをgitリポジトリに伝える必要があります。

[email protected]/yyyproject.gitへの変更git@bit-yyyuser:yyyuser/yyyproject.git

プロジェクトフォルダにリモートURLを追加します

/var/www/yyyproject$ git remote add bit git@bit-yyyuser:yyyuser/yyyproject.git

他のプロジェクト

/var/www/xxxproject$ git remote add bitt git@bit-xxxuser:xxxuser/xxxproject.git

プッシュとプルを簡単に使用できるようになりました

:/var/www/yyyproject$ git pull bit master
From bit-yyyuser:yyyuser/yyyproject
 * branch            master     -> FETCH_HEAD
Already up-to-date.
:/var/www/yyyproject$

そして別のプロジェクト

/var/www/xxxproject$ git push bitt ver1
To git@bit-xxxuser:xxxuser/xxxproject.git
 * branch            master     -> FETCH_HEAD
Already up-to-date.
:/var/www/xxxproject$ 

現在、ローカルマシンにgithubプロジェクトがないので、プロジェクトをクローンする必要がありますが、クローンするにはURLを少し変更する必要があります。

私たちのURLは次のようになります

[email protected]:xxxuser/python.git

特定のキーでクローンを作成する必要があるので、定義したホストにホスト名を変更するだけです。

git@git-xxxuser:xxxuser/python.git

設定ファイルで定義されている

そして今、クローンを作ることができる

:/var/www/us$ git clone git@git-xxxuser:xxxuser/python.git
Cloning into 'python'...
remote: Counting objects: 75, done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 75 (delta 18), reused 62 (delta 8)
Receiving objects: 100% (75/75), 6.29 KiB, done.
Resolving deltas: 100% (18/18), done.
:/var/www/us$ 

異なるホストに対して異なる SSH キーを識別しました。1 つは Git 用、もう 1 つは Bitbucket 用です。これで、システムはどのホストでどの SSH キーを使用するかを認識します。

今では簡単に引っ張ったり押したりできるようになりました。

答え2

次のように設定します~/.ssh/config

Host gitlab-as-thuc  
    HostName git.thuc.com
    User git
    IdentityFile ~/.ssh/id_rsa.thuc
    IdentitiesOnly yes

次に、git URL で実際のドメインの代わりにカスタム ホスト名を使用します。

git remote add thuc git@gitlab-as-thuc:your-repo.git  

詳細については、こちらをご覧ください:http://itblog.study.land/how-to-specify-different-ssh-keys-for-git-push-for-a-given-domain/

関連情報