しばらく検索しましたが、問題の解決策が見つかりません。
ユーザー名git
とローカルgitリポジトリでssh経由で接続できるサーバーがあります。
次に、ローカルリポジトリをサーバー上に新しく作成したリポジトリにプッシュします。
ここに私がやったことがあります:
/home/git/test.git
に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サーバーにアップロードしたい。git
ユーザーでssh経由でログインできます。私はこれをroot
ユーザー(一度動作させるため)としても同じ結果を出そうとしました。
ssh password
を求められることはありません。
私は何を間違っているのか本当に分かりません。
これを複製と呼ぶ前に、私はこの問題をよく検索しましたが、同じ問題について話している人はいませんでした。
更新:
'C:\ Program Files(x86)\ PuTTY\plink.exe' '-batch' 'git @ serverIp' 'git-receive-pack'\''/home/git/test.git '\' ''致命的:リモートリポジトリから読み取ることができませんでした。正しいアクセス権があり、リポジトリが存在することを確認してください。
この場合、PuTTYでopensshを使用することが重要でした。
元の回答(デバッグのヒント)
git
ユーザーでssh経由でログインできます。
これはこれが機能することを意味します:
ssh git@serverIp
HOME
変数が定義されており、id_rsa
にssh公開/秘密キー(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実行可能ファイルのパスを返す必要があります。
また、すべての親ディレクトリに、ls -ld /home /home/git /home/git/test.git
を実行しているユーザーx
またはグループgit
に関連するgitgroup
(実行)ビットが設定されていることを確認します。
また、gitコマンドの詳細情報は次の方法で取得できます。
git Push --verbose
GIT_TRACE=2 git Push test master
パスワード付きのプライベートsshキーがある場合、最初にプライベートsshキーnotパスワードで保護されたsshコマンドをテストすることをお勧めします問題が解決しないか確認してください。
または、パスワードで保護されたsshキーを保持できますが、 この回答のように.bashrc
を再確認してください 。
Ssh接続の問題(gitのパスワードが必要な場合)については、以下を確認してください。
/var/log/auth.log
、あなたの場合、それはssh git@serverIp
(インタラクティブセキュアシェル)で動作しますが、git(非インタラクティブセキュアシェルを開く)では動作しないため、 このスレッド を参照します。 これ :
コマンドラインでsshを起動すると、非対話型の非ログインシェルが起動します。
しかし...bash
はこの場合$BASH_ENV
を使用しないため、~/.ssh/environment
で設定する(たとえば/etc/profile
に)しても役に立ちません。
bashが行うのは、ソース/etc/bashrc
および~/.bashrc
です。
/etc/profile
が git
のパス を定義していることを確認してください。これは ここでは非ログインアカウントを使用できます (そうであるようです)ここでは、ssh git@serverIp "which git"
が機能し、ssh git@serverIp "git --version"
も機能するはずです。
ただし、正しい問題も確認し、chmod 755
、/home
、および/home/git
で/home/git/test.git
をテストします。
私は個人的にこれに関して2つの異なる問題がありました:
plink
(Windowsのgitで使用)は、OpenSSH 2形式のid_rsa
秘密鍵を受け入れません=>私は(puttygen
を使用して)PuTTYに変換しなければなりませんでした.ppk
フォーマットを所有し、Git拡張機能の「Remotes
」ダイアログを介してアタッチします
Gitフォルダーへのパスを誤って指定しました。'sshセッションがchrootされたため(Wordが間違っている可能性があります)、FTPの「root
」を「/
」として指定しました。代わりに「/home/www/username/
」でした。
上記のようにGIT TRACE=2
を使用し、procmon
を使用してplink
の正確なコマンドラインを決定し、「-v
"オプション("詳細 ")。
以下を実行して、SSH IDを確認することもできます。
$ ssh-add -L
同様の問題がありました。私の身元に間違ったキーがありました。理由を覚えていません。すべてのIDを削除するだけです(キーを再度追加する必要があるかもしれません)。
$ ssh-add -D
その後、問題なくプッシュ/プルを行いました。
GIT_SSH環境変数を、PuTTYのTortoisePlink.exe
の代わりにplink.exe
のフルパスに設定します(このためにはTortoiseGitをダウンロードする必要がある場合があります)。これにより、ポップアップダイアログウィンドウで、プロンプトを表示したり、指紋を確認したり、パスワードを入力したりできます。 Gitを介してplink.exe
を使用する場合、plink.exeプロンプトへの応答を入力することはできません。プロンプトがあると、致命的なエラーが発生します。