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

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

ただいまの
回答率

90.48%

  • Git

    1353questions

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

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

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 441

sk1050

score 1

 前提・実現したいこと

皆さん こんにちは。
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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

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

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

<ここにssh公開鍵>

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

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

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

$ git clone git@server:user/reponame.git
Cloning into 'reponame'...
fatal: ''user/reponame.git'' does not appear to be a git repository
fatal: Could not read from remote repository.

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

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

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

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

$ git clone git@server:user/reponame.git
Cloning into 'reponame'...
remote: Counting objects: 33, done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 33 (delta 11), reused 0 (delta 0)
Receiving objects: 100% (33/33), 32.28 KiB | 0 bytes/s, done.
Resolving 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/22 13:26

    shimizukawa様
    こんにちは。

    お盆期間中、工場ライン立ち上げのため返答遅くなり申し訳ありませんでした。
    また、詳細な回答を頂きありがとうございました。

    現状、力技でパッチを作成し対応しておりましたが、
    回答いただいた内容を参考にこちらでも試してみたいと思います。

    今回は、有益な回答を頂きありがとうございました。

    キャンセル

0

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/13 16: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

    キャンセル

  • 2018/04/13 18:15

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

    キャンセル

  • 2018/04/16 09:38

    お世話になっております。

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

    キャンセル

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

  • ただいまの回答率 90.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Git

    1353questions

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