2つのGitHubアカウントがあります。個人用コピー1個と業務用コピー1個。それぞれは独自のSSHキーgh_personal
とgh_business
内部エントリで設定されます~/.ssh
。
にプライベートプロジェクトがあります~/code/bejebeje
。プロジェクトを操作するたびに、次のコマンドを実行する必要があります。
eval `ssh-agent -s`
以下は:
ssh-add ~/.ssh/gh-personal
そうしてgit pull
こそ同じことができますgit push
。
推測されましたが、私はいつもこのことをするのを忘れています。
ディレクトリに入るときにLinuxシステムにこのタスクを自動的に実行させる方法はありますか~/code/bejebeje
?
私はアーチLinuxを使用しています。
答え1
次のように、さまざまなアドレスに一致するssh_config
AKAを作成できます。~/.ssh/config
Host *
Protocol 2
PreferredAuthentications publickey,password
VisualHostKey yes
Host work_gh
HostName github.com
IdentityFile ~/.ssh/id_rsa.work
IdentitiesOnly yes
ForwardAgent no
LogLevel DEBUG
Host personal_gh
HostName github.com
IdentityFile ~/.ssh/id_rsa.personal
IdentitiesOnly yes
ForwardAgent no
LogLevel DEBUG
また、この構成にはssh-agentは必要なく、プロキシを使用しようとしません。設定できるオプションのIdentitiesOnly
詳細をご覧ください。man ssh_config
ssh_config
Gitに戻り、複製するアドレスのホスト名として「personal_gh」という名前を使用できます。
git clone git@personal_gh:mypersonalghuser/things.git
You can also change existing git repositories:
git remote show origin
* remote origin
Fetch URL: git@personal_gh:mypersonalghuser/things.git
Push URL: git@personal_gh:mypersonalghuser/things.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
2つのアカウントにプッシュする必要があるリポジトリがある場合は、gitに複数のリモートデバイスを追加し、次のようにプッシュすることをお勧めします。
git push my-dest-account-1 master
git push my-dest-account-2 master
以下からリモコンを追加できます。
git remote add --help
とにかく、SSHクライアント構成でこれを構成した場合、使用されるSSHキーは通常、gitアドレスのホスト名部分に基づいて一致します。~/.ssh/config