質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Q&A

解決済

2回答

6877閲覧

git clone sshでfatal: ''/aaa.git'' does not appear to be a git repository

sk1050

総合スコア7

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

0グッド

0クリップ

投稿2018/04/13 02:34

前提・実現したいこと

皆さん こんにちは。
2008serverにリモートリポジトリを作成し、ソース管理を行いたいと思っています。
サーバにgit for windows 2.17をインストールしc:\aaa.gitを作成しました。
また、sshキーを作成しクライアントからssh接続を確認できています。
クライアントからsshでgit cloneを行ったとき、エラーが発生します。
エラー解消方法などご教授いただけないでしょうか。
よろしくお願いします。

発生している問題・エラーメッセージ

git clone ssh://gitserver/aaa.git f:\temp\wk\aa6 Cloning into 'f:\temp\wk\aa6'... fatal: ''/aaa.git'' does not appear to be a git repository fatal: Could not read from remote repository. 上記エラーが発生し、cloneに失敗します。

該当のソースコード

https://github.com/git/git/blob/master/upload-pack.c 1093:dir = argv[0]; 1094: 1095:if (!enter_repo(dir, strict)) 1096: die("'%s' does not appear to be a git repository", dir);

試したこと

git daemon を立ち上げてgitによるcloneは成功しています。
git clone git://192.168.68.129/aaa.git f:\temp\wk\aa7
Cloning into 'f:\temp\wk\aa7'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.

気になったのが
fatal: ''/aaa.git'' does ... で'が2つ続いています。
upload-packの引数に'/aaa.git'が渡されてそのままリポジトリのチェックを行っているためエラーになるのではないかと考えていますが、いかがでしょうか。
なお、該当のソースコードは該当バージョンのソースでは無いかと思いますが、エラーの出方からして同じではないかと思い、記載しています。
よろしくお願いします。

補足情報(FW/ツールのバージョンなど)

git version 2.17.0.windows.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

WindowsではなくUbuntuですが、同じ問題が出たため試行錯誤して対処できました。

はじめは .ssh/authorized_keys に以下のように記載していました。

<ここにssh公開鍵>

これで、clone等はできていましたが、フルパスを指定したくなかったため、以下のように書き換えました。

command="cd /path/git/ && ${SSH_ORIGINAL_COMMAND}" <ここにssh公開鍵>

これで以下のコマンドを実行し、質問と同様のエラーが出ていました。

bash

1$ git clone git@server:user/reponame.git 2Cloning into 'reponame'... 3fatal: ''user/reponame.git'' does not appear to be a git repository 4fatal: Could not read from remote repository. 5 6Please make sure you have the correct access rights 7and the repository exists.

最終的に .ssh/authorized_keys を以下のように記載していました。

command="cd /path/git/ && git-shell -c \"${SSH_ORIGINAL_COMMAND}\"" <ここにssh公開鍵>

これでgit cloneができるようになりました。

bash

1$ git clone git@server:user/reponame.git 2Cloning into 'reponame'... 3remote: Counting objects: 33, done. 4remote: Compressing objects: 100% (32/32), done. 5remote: Total 33 (delta 11), reused 0 (delta 0) 6Receiving objects: 100% (33/33), 32.28 KiB | 0 bytes/s, done. 7Resolving deltas: 100% (11/11), done.

git-shell -c を挟んだのは、 https://git-scm.com/book/ja/v1/Git-サーバー-サーバーのセットアップを読んで試行錯誤したためですが、結果的にこれで問題を解決できました。

'が2つ続いていることがエラーの原因という推測は合っている気がします。
しかし、 authorized_keysにcommand=を書かなかった場合はエラーにならないため、shellの引数を渡す処理でなにか起きている可能性がありそうです。その場合はgitの問題ではないかもしれません。

また、git-shellを挟んだことでこの問題が解消したことからみて、他のwrapperコマンド等で'を外す処理を入れても、同様に問題を解決できそうに思います。

投稿2018/08/15 13:48

shimizukawa

総合スコア1847

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sk1050

2018/08/22 04:26

shimizukawa様 こんにちは。 お盆期間中、工場ライン立ち上げのため返答遅くなり申し訳ありませんでした。 また、詳細な回答を頂きありがとうございました。 現状、力技でパッチを作成し対応しておりましたが、 回答いただいた内容を参考にこちらでも試してみたいと思います。 今回は、有益な回答を頂きありがとうございました。
guest

0

git clone ssh://gitserver/aaa.git f:\temp\wk\aa6

sshなら<username>@<path>の形になるはずなのでssh://gitserver/aaa.gitはおかしい。
(.ssh/configUserを設定していれば<username>は省略可)

投稿2018/04/13 06:21

yumetodo

総合スコア5850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sk1050

2018/04/13 07:50

回答ありがとうございます。 git manpageでは The following syntaxes may be used with them: ssh://[user@]host.xz[:port]/path/to/repo.git/ とありますでの、合っていると思うのですが... .ssh/configの内容は以下の通りです。 Host gitserver HostName 192.168.68.129 User USER0611 Port 22 IdentityFile C:\id_rsa ServerAliveInterval 60
yumetodo

2018/04/13 09:15

そもそもsshは通っているのですか?
sk1050

2018/04/16 00:38

お世話になっております。 >また、sshキーを作成しクライアントからssh接続を確認できています。 ssh通っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問