33

しばらく検索しましたが、問題の解決策が見つかりません。

ユーザー名gitとローカルgitリポジトリを使用してssh経由で接続できるサーバーがあります。
ここで、ローカル リポジトリをサーバー上に新しく作成したリポジトリにプッシュしたいと考えています。

これが私がしたことです:

  • にgitリポジトリを作成しました/home/git/test.git
  • リポジトリをベアとして初期化しました
  • ローカル マシンにリモート リポジトリを追加しました
    git remote add test ssh://git@serverIp:/home/git/test.git
  • 今私はプッシュコマンドを実行しました:
    git push test master

私はいつも

fatal: could not read from remote repository

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

ローカルの Windows 7 マシンで作業しており、Linux サーバーにアップロードしたいと考えています。
ユーザーでssh経由でログインできますgit。また、ユーザーとしてこれを実行しようとしましたroot(物事を一度機能させるために)同じ結果が得られました。
ssh を求められることはありませんpassword

私は自分が間違っていることを本当に知りません。
これを重複と呼ぶ前に、私はこの問題をたくさん検索しましたが、同じ問題について話している人はいませんでした.

アップデート:

  • 「どの git」は /usr/bin/git を返します
  • PATH エコーには /usr/bin が含まれます
  • id_rsa およ​​び id_rsa.pub ファイルはすべて設定され、パスフレーズが設定されています
  • ssh git@serverIp git-receive-pack も機能し、/usr/bin/git-receive-pack を返します
  • ssh git@serverIp ls /home/git/test.git は動作します
  • 関連するすべてのディレクトリは chmod 755 です
  • git はリポジトリの所有者です
  • auth.log ファイルは、試行されたプッシュ コマンドで新しいエントリを取得しません
  • GIT_TRACE=2 git push テスト マスターは次を返します。

    'C:\Program Files (x86)\PuTTY\plink.exe' '-batch' 'git@serverIp' 'git-receive-pack '\''/home/git/test.git'\''' 致命的:リモート リポジトリから読み取れませんでした。正しいアクセス権があり、リポジトリが存在することを確認してください。

4

4 に答える 4

17

この場合、パテではなく openssh を使用することが重要でした。


元の回答 (デバッグのヒント)

ユーザーでssh経由でログインできますgit

つまり、これは機能します:

ssh git@serverIp

HOME変数が定義されておりid_rsa、.id_rsa.pub%HOME%/.ssh/

この質問は別の URL を示唆しています:

git remote set-url test git@serverIp:/home/git/test.git

git リポジトリを git として作成したことを確認してください (この質問のように、git アカウントを作成したときに root としてではありません)。
ssh git@serverIp "which git"git 実行可能ファイルのパスを返す必要があります。

すべての親ディレクトリに、実行中のユーザーまたはグループに関連するx(実行) ビットが設定されていることも確認してください。 また、git コマンドの詳細情報を取得するには、次のようにします。gitgitgroupls -ld /home /home/git /home/git/test.git

  • git push --verbose
    また:
  • GIT_TRACE=2 git push test master

パスワード付きの秘密 ssh キーがある場合は、パスワードで保護されていない秘密 ssh キーを使用してこれらの ssh コマンドを最初にテストし、問題が解決しないかどうかを確認することをお勧めします。
または、そのパスワードで保護された ssh キーを保持することもできますが、この回答のように再確認してください.bashrc


ssh 接続の問題 (git のパスワードが必要な場合) については、以下を確認してください。


あなたの場合、ssh git@serverIp(インタラクティブなセキュアシェル)で動作しますが、git(非インタラクティブなセキュアシェルを開く)では動作しないため、これを参照するこのスレッドを見てください:

コマンドラインで ssh を開始すると、非対話型の非ログイン シェルが開始されます。
ただし...この場合bashは使用しないため、に設定しても役に立ちません。 bash が行うのは sourceと. $BASH_ENV~/.ssh/environment/etc/profile
/etc/bashrc~/.bashrc

ここではログインしていないアカウントを使用できるため、が のパスを/etc/profile定義していることを確認してください(機能しているため、ここでもそうであるように思われます)。gitssh git@serverIp "which git"ssh git@serverIp "git --version"

ただし、正しい問題も確認し、 、およびでテストしchmod 755ます。/home/home/git/home/git/test.git

于 2013-04-20T10:47:13.360 に答える