今回の問題
メインとは別にサブのGithubのアカウントのssh接続をターミナルでテストも行い、いざSourceTreeでcloneしようとすると、接続先の公開鍵の権限が拒否されて、リモートリポジトリの読み取りのエラーが出ました。
原因
今回の原因はSourceTreeでは「最初に接続したアカウントのSSHキーを、デフォルトで次に接続するアカウントも使用するようになってしまっている。」ことにあります。なのでGitHubのアカウントに紐づいたSSHキーではないためエラーになっている状態です。
私がSourceTreeに最初に接続したアカウントはメインで使っていたアカウントなので、そのアカウントからサブのリポジトリにssh接続しようとしていたことが原因でした。
解決策
では、どのように複数のアカウントでcloneするのかですが、やるべきことが二つあります。
/Users/ユーザー名/.ssh
の配下にあるconfigファイルに設定を追加- リモート接続のパスの書き換え
/Users/ユーザー名/.sshの配下にあるconfigファイルに設定を追加
/Users/ユーザー名/.ssh
配下にあるconfigファイルの接続したいアカウントに、「IdentitiesOnly yes」という記述を追加します。
Host sample-GitHub-sub // Host名
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/sample-GitHub-sub
UseKeychain yes
AddKeysToAgent yes
IdentitiesOnly yes // この記述を追加
これはGitHubのホストごとに、指定された秘密鍵のみを使用する設定になります。
リモート接続のパスの書き換え
GitHubのリポジトリ画面に表示されるSSHのパスは、
git@github.com:[GitHubユーザ名]/[リポジトリ名].git
このような形式になっています。
しかしこれではローカルPCのHost名は「sample-GitHub-sub
」になっているため、.sshのconfig設定の情報とは異なります。
なのでHost名:Githubユーザー名/リポジトリ名.git
の形式に変えてあげましょう。
今回だったらsample-GitHub-sub:Githubユーザー名/sourcetree-test-sub.git
ですね。
この設定を行いようやくcloneすることができました。
最後に
独学中はSourceTreeの存在など知らなかったのですが、知った時は本当に感動しました。
記事の感想や意見、ご指摘等いただけると助かります。
最後までご覧いただき、ありがとうございました。