環境
エディタ: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のターミナルをいじっていたのかはあまり覚えていませんが、とにかく参照しているディレクトリには気をつけたいですね。