2013-04-20 41 views
31

Tôi đã tìm kiếm một lúc nhưng tôi không thể tìm thấy giải pháp cho Vấn đề của mình.git đẩy tới kho lưu trữ từ xa "Không thể đọc từ kho lưu trữ từ xa"

Tôi có Máy chủ tôi có thể kết nối với thông qua ssh với tên người dùng git và kho lưu trữ git cục bộ.
Bây giờ tôi muốn đẩy kho lưu trữ cục bộ của mình sang kho lưu trữ cục bộ mới được tạo trên Máy chủ.

Dưới đây là những gì tôi đã làm:

  • tạo một kho git trong /home/git/test.git
  • khởi tạo kho lưu trữ như trần
  • thêm kho từ xa trên máy tính cục bộ
    git remote add test ssh://[email protected]:/home/git/test.git
  • bây giờ tôi thực hiện lệnh đẩy:
    git push test master

tôi luôn luôn nhận được

fatal: could not read from remote repository 

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

Tôi đang làm việc trên một cửa sổ địa phương 7 máy và muốn tải lên một máy chủ Linux.
Tôi có thể đăng nhập qua ssh với người dùng git. Tôi cũng đã cố gắng thực hiện điều này với tư cách là người dùng root (để mọi thứ hoạt động một lần) với cùng một kết quả.
Tôi chưa bao giờ được hỏi về ssh password.

Tôi thực sự không biết mình đang làm gì sai.
Trước khi bạn gọi đây là một bản sao, tôi đã tìm kiếm rất nhiều về vấn đề này và dường như không có vấn đề gì xảy ra.

update:

  • "mà git" lợi nhuận/usr/bin/git
  • PATH vang includes/usr/bin
  • id_rsa và các tập tin id_rsa.pub đều thiết lập và withput Passphrase
  • ssh git @ serverIp mà git-nhận-pack làm việc quá và lợi nhuận/usr/bin/git-nhận-pack
  • ls
  • ssh git @ serverIp /home/git/test.git làm việc
  • tất cả các thư mục có liên quan là chmod 755
  • git là chủ sở hữu của kho
  • tập tin auth.log được không có bài mới trên lệnh push thử
  • GIT_TRACE = 2 git kiểm tra push tổng lợi nhuận:

    ' C: \ Program Files (x86) \ PuTTY \ plink.exe '' -batch '' git @ serverIp '' git-nhận-gói '\' '/ home/git/test.git' \ '' 'tử vong: Có thể không đọc từ kho lưu trữ từ xa. Hãy đảm bảo rằng bạn có quyền truy cập chính xác và kho lưu trữ tồn tại.

+0

plink? Bạn có thể thử nó với openssh? (http://stackoverflow.com/a/7697167/6309, http://guides.beanstalkapp.com/version-control/git-on-windows.html) – VonC

+2

Cái gì, Chuyện gì vừa xảy ra? Nó hoạt động Tôi chỉ cần cài đặt lại Git chọn openssh thay vì putty và nó đẩy mà không có vấn đề với kho từ xa. – user1090755

+0

Phải, tôi không thấy ngay lập tức, nhưng tôi luôn sử dụng openssh với cài đặt git của mình. Tôi đã cập nhật câu trả lời. – VonC

Trả lời

17

Trong trường hợp này, sử dụng openssh trên putty là chìa khóa.


câu trả lời gốc (lời khuyên cho việc gỡ lỗi)

tôi có thể đăng nhập thông qua ssh với người sử dụng git.

Đó có nghĩa là làm việc này:

ssh [email protected] 

Bạn không có một biến HOME xác định, và ssh công cộng/khóa riêng (id_rsa/id_rsa.pub) trong %HOME%/.ssh/.

This question cho thấy một url khác nhau:

git remote set-url test [email protected]:/home/git/test.git 

Hãy chắc chắn rằng bạn đã tạo repo git của bạn như git (và không phải là gốc, khi bạn đã tạo tài khoản git, như trong this question).
ssh [email protected] "which git" phải trả về đường dẫn của tệp thực thi git.

Kiểm tra cũng là tất cả các thư mục mẹ có liên quan x (thực hiện) bit đặt cho người dùng git hoặc nhóm gitgroup, chạy ls -ld /home /home/git /home/git/test.git.
Ngoài ra, nhận được thông tin nhiều hơn cho một lệnh git có thể được thực hiện với:

  • git push --verbose
    hay:
  • GIT_TRACE=2 git push test master

Nếu bạn có một phím ssh tin với một mật khẩu, nó sẽ tốt nhất là kiểm tra đầu tiên các lệnh ssh đó bằng khóa ssh riêng không được bảo vệ bằng mật khẩu để xem sự cố vẫn còn tồn tại hay không.
Hoặc bạn có thể giữ khóa ssh được bảo vệ bằng mật khẩu đó, nhưng double-check your .bashrc as in this answer.


Đối với bất kỳ vấn đề kết nối ssh (nơi mật khẩu git là cần thiết), kiểm tra:


Trong trường hợp của bạn, vì nó làm việc với ssh [email protected] (vỏ an toàn tương tác), nhưng không phải với git (whi ch mở ra một vỏ an toàn không tương tác), có một cái nhìn tại this thread, có sự tham khảo this one:

Khi ssh được bắt đầu với một dòng lệnh, một vỏ không đăng nhập không tương tác được bắt đầu.
Tuy nhiên ...bash không sử dụng $BASH_ENV trong trường hợp này, vì vậy, hãy đặt số điện thoại trong ~/.ssh/environment (ví dụ: /etc/profile) không giúp ích gì.
Nguồn bash nào là nguồn /etc/bashrc~/.bashrc.

Hãy chắc chắn rằng /etc/profile không xác định path for git, vì một non-login account could be used here (mà dường như là trường hợp ở đây, vì ssh [email protected] "which git" làm việc, và ssh [email protected] "git --version" cũng nên như vậy).

Nhưng hãy kiểm tra vấn đề phù hợp và thử nghiệm chmod 755 trên /home, /home/git/home/git/test.git.

+3

Hóa ra 'ssh: //' url cũng được [hỗ trợ] (http://git-scm.com/book/ch4-1.html#The-SSH-Protocol), nhưng nó được chỉ định sai bởi OP. 'ssh: // git @ serverIp:/home/git/test.git' không hợp lệ vì dấu hai chấm phụ. Nó phải là 'ssh: // git @ serverIp/test.git' hoặc, như bạn đề nghị,' git @ serverIP:/home/git/test.git' hoặc 'git @ serverIp: test.git'. – jszakmeister

+0

tôi có khóa được thiết lập trong .ssh, tôi đã thử mọi phiên bản url, tôi đảm bảo git là chủ sở hữu của test.git và test.git đã thực thi bộ bit. verbose chỉ cung cấp thêm thông báo "push to" url. Oh và tôi đã thêm tập lệnh được đề xuất vào .bashrc – user1090755

+0

@ user1090755 là mật khẩu khóa ssh riêng tư của bạn được bảo vệ? – VonC

6

Cá nhân tôi đã có 2 vấn đề khác nhau với điều này:

  1. plink (được sử dụng bởi git trên Windows) không chấp nhận id_rsa khóa bí mật vì nó là ở định dạng OpenSSH 2 => Tôi đã phải chuyển đổi nó (sử dụng puttygen) để PuTTY sở hữu định dạng .ppk và đính kèm qua Git Extensions "Remotes" hộp thoại

  2. tôi đã chỉ định đường dẫn đến git thư mục sai, bởi vì phiên ssh của tôi đã chroot (Nó có thể là sai từ) và tôi đã xác định rằng FTP của tôi là gì "root "như" / ", thay vào đó là" /home/www/username/ ".

tôi đã hiểu tất cả điều này, sử dụng GIT TRACE=2 như mô tả ở trên và cũng có thể bằng cách sử dụng procmon để xác định dòng lệnh chính xác cho plink và sau đó chơi với nó, thêm "-v" tùy chọn ("verbose").

+0

+1. Phản hồi gỡ lỗi thú vị. – VonC

6

Bạn cũng có thể kiểm tra bản sắc SSH của bạn bằng cách thực hiện:

$ ssh-add -L 

Tôi đã có một vấn đề tương tự. Có một chìa khóa sai trong danh tính của tôi, không nhớ tại sao. tôi chỉ xóa tất cả bản sắc của tôi (có lẽ bạn sẽ cần phải thêm phím một lần nữa):

$ ssh-add -D 

Sau đó, tôi đã đẩy/kéo không có vấn đề.

+0

Câu trả lời tuyệt vời ..... bạn đã tiết kiệm thời gian của tôi ... Tôi đã nhận được pissed off kể từ cuối một giờ ... đã thử tất cả các công cụ khác .. – minhas23

0

Đặt biến môi trường GIT_SSH thành đường dẫn đầy đủ của TortoisePlink.exe (bạn có thể phải tải xuống TortoiseGit cho mục này) thay vì plink.exe của PuTTY. Điều này sẽ cho phép cửa sổ hộp thoại bật lên nhắc mọi thứ, tức là, xác nhận vân tay hoặc nhập mật khẩu. Nếu bạn sử dụng plink.exe thông qua Git, bạn không thể nhập câu trả lời cho lời nhắc plink.exe, nếu có bất kỳ lời nhắc nào sẽ gây ra lỗi nghiêm trọng mà bạn nhìn thấy.

Các vấn đề liên quan