0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

複数のアカウントの競合でgit cloneが出来ない;;ってなった時の対処

Last updated at Posted at 2024-12-04

環境

エディタ:VScode
OS:Ubuntu 20.04.6

git cloneが出来ない;;

GitHub上のリポジトリをSSHでgit cloneしようとしたらこんなエラーが。。。

ERROR: Repository not found.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

在るはずのリポジトリが存在していないと言われてしまいました。

やってみたこと1:アカウントの確認

ssh接続を行っているアカウントをターミナル上で確認してみます。

git config --global user.email
git config --global user.name

アカウント情報は問題ありませんでした。接続状況も問題なさそうです。

やってみたこと2:~/.ssh/configの確認

複数アカウントを使い分けている場合、~/.ssh/config内で何かしら設定していると思います。その設定が正しいか確認してみましょう。

Host github
  HostName github.com
  User git
  Port 22
  TCPKeepAlive yes
  IdentityFile ~/.ssh/<秘密鍵のファイル>
  IdentitiesOnly yes

Host github
  HostName github.com
  User git
  Port 22
  TCPKeepAlive yes
  IdentityFile ~/.ssh/<秘密鍵のファイル>
  IdentitiesOnly yes

おそらくconfigの中身はこのようになっているはずです。問題なさそうですね。


以上のことから、原因は複数アカウントの競合なのでは?と思いました。

解決策

~/.ssh/configの内容を書き換える

SSHでgit cloneをするためにGitHub上からコピーしてくるgit@github.com:なんたら/かんたら.gitですが、意味としては

git -> User
github.com -> HostName
なんたら/かんたら -> GitHubユーザ「なんたら」の「かんたら」というリポジトリ
.git -> gitプロジェクトを示す拡張子

となります。
そしてこのgit@github.com:なんたら/かんたら.gitは、以下のように書き換えても同様の処理を行えます。

Host:なんたら/かんたら.git

つまり、明示的にHostを設定することによって、アカウントの競合を避けることができます。

Host github
  HostName github.com
  User git
  Port 22
  TCPKeepAlive yes
  IdentityFile ~/.ssh/<秘密鍵のファイル>
  IdentitiesOnly yes

Host github_sub
  HostName github.com
  User git
  Port 22
  TCPKeepAlive yes
  IdentityFile ~/.ssh/<秘密鍵のファイル>
  IdentitiesOnly yes

このように設定することによって、

git clone github:なんたら/かんたら.git
git clone github_sub:なんたら/かんたら.git

が競合が起こらずに処理され、問題なくcloneできました!

それでもうまくいかない場合はWindows PowerShellでssh接続の準備を行った可能性も

本筋とは離れますが、Ubuntuのターミナル上でgit cloneしたときに参照されるディレクトリに.ssh/configがない可能性があります。
ssh接続を行う(もしくはgit cloneを行う)際に参照されるのは/home/User/.sshですが、私の場合そのディレクトリに秘密鍵等の情報が全くありませんでした。エクスプローラーを色々除いてみると、Cドライブ上にそれらの情報が存在していたので、ssh接続設定のKey発行時にWindows PowerShel環境下で作成していたみたいです。Cドライブ上に情報がある方はCドライブの~/.sshディレクトリをそのままUbuntuにコピーして権限設定をすることでUbuntuのターミナル上でもgit cloneができるようになります。

注意!以下はCドライブ上の情報をUbuntu上に上書きするため、既にUbuntu上でSSH接続の設定している方は実行しないでください!
 cp -r /mnt/c/Users/<ユーザ名>/.ssh /home/<ユーザ名>/
chmod 700 /mnt/c/Users/<ユーザ名>/.ssh
chmod 600 /mnt/c/Users/<ユーザ名>/.ssh/*

普段Ubuntuを使うのになぜPowerShellのターミナルをいじっていたのかはあまり覚えていませんが、とにかく参照しているディレクトリには気をつけたいですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?