git: fatal: Không thể đọc từ kho lưu trữ từ xa


356

Tôi đang cố gắng thiết lập git với http://danielmiessler.com/study/git/#website để quản lý trang web của mình.

Tôi đã đến bước cuối cùng trong hướng dẫn: git đẩy trang web + master: refs / Heads / master

Tôi đang làm việc bằng cách sử dụng dòng lệnh git ming32 trong win7

$ git push website +master:refs/heads/master
Bill@***.com's password:
Connection closed by 198.91.80.3
fatal: Could not read from remote repository.

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

Một vấn đề ở đây có thể là chương trình đang tìm kiếm Bill@***.com. Khi tôi kết nối qua ssh với trang web của mình, tôi có một tên người dùng khác (giả sử 'abc'). vì vậy có lẽ đây nên là abc@***.com. Nếu vậy tôi không biết làm thế nào để thay đổi điều này hoặc nếu tôi có thể đẩy bí danh


1
Tôi gặp vấn đề tương tự, đôi khi lỗi này xảy ra khi máy chủ git không truy cập được hoặc có lỗi như "lỗi máy chủ nội bộ".
Morteza Ziyae

2
Đầu tiên xin vui lòng xem .git/configtập tin và xem mọi thứ theo thứ tự. Nó có sai giá trị set-url và origin cho tôi.
mixdev

Có lẽ điều này sẽ giải quyết vấn đề: help.github.com/articles/connecting-to-github-with-ssh
Guy Avraham

Một vấn đề liên quan: stackoverflow.com/questions/10127818/
Ấn

bạn có thể chỉ cho tôi thứ tự chính xác của .git / config và cả .ssh / config không ... vì tôi đang bối rối.
gumuruh

Câu trả lời:


134

Bạn có thể chỉ định tên người dùng mà SSH sẽ gửi đến hệ thống từ xa như một phần của URL từ xa của bạn. Đặt tên người dùng, theo sau là một @, trước tên máy chủ từ xa.

git remote set-url website abc@***.com:path/to/repo

3
ps, có cách nào để thêm mật khẩu để tôi không phải gõ mật khẩu không?
LDN

15
chỉnh sửa tệp .git/configcó tham số url từ xa
Sayanee

@ user61629: Tôi biết tôi đến bữa tiệc muộn, nhưng bạn nên cân nhắc sử dụng các cặp khóa riêng / công khai thay vì mật khẩu.
code_dredd

Tên người dùng nào? Tên người dùng máy tính hoặc tên người dùng github?
Đặc vụ Zebra

11
Đối với Github, bạn luôn sử dụng tên người dùng git. Ví dụ: git@github.com:mayoff/uiimage-from-animated-gif.gitGithub tìm ra danh tính của bạn bằng cách xem khóa SSH nào bạn gửi.
cướp mayoff

190

Khóa ssh của bạn rất có thể đã bị xóa khỏi đại lý ssh

ssh-add ~/.ssh/id_rsa

trong đó id_rsa là khóa ssh được liên kết với git repo


7
Điều này làm việc cho tôi! Tôi đã mất một thời gian dài để cố gắng định cấu hình tệp ~ / .ssh / config của mình để sử dụng các khóa khác nhau cho các máy chủ khác nhau, nghĩ rằng tệp này là vấn đề. Cuối cùng, nó phải được sử dụng đúng khóa cho đúng máy chủ, nhưng khóa đó đã bị "xóa". vì vậy, ssh-add ~/.ssh/theKeyInQuestiontôi đã sao lưu và chạy với repo này, không biết khóa bị xóa hay "loại bỏ" thậm chí có nghĩa là gì nhưng ít nhất tôi đã có thể được xác thực lại. SSH là một bí ẩn đối với tôi ngay cả sau nhiều tháng xử lý các vấn đề xác thực. vấn đề đại lý ssh là một điều nữa cần phải nhận thức!
Alex Bollbach

Cảm ơn rất nhiều .. Điều này cuối cùng đã làm việc cho tôi sau khi cố gắng tạo, xóa, v.v ... các khóa SSH vào tài khoản GitLab của tôi .... Cảm ơn !!
Bms bharadwaj

Điều này đã giải quyết vấn đề của tôi. Tôi đã có khóa ssh mới được tạo trên máy chủ. Chìa khóa này cần được thêm vào !!
Kashan

1
Điều này đã giải quyết nó cho tôi, tôi không hiểu tại sao .. Nó đã từng hoạt động và đột nhiên không, có một quy trình loại bỏ chìa khóa khỏi tác nhân, nó có thể xảy ra một cách tình cờ không?
Miguel Stevens

Tại sao nó xảy ra? Nó làm việc cả ngày nhưng buổi tối nó dừng lại để làm việc. Câu trả lời này đã giúp.
Andrey Semakin

130

Hãy chắc chắn rằng bạn có url chính xác trong .git/config

url = git@github.com:username/repo.git

Nếu đó là lần đẩy đầu tiên của bạn, bạn sẽ cần thiết lập chính xác ngược dòng

$ git push -u origin master

Bạn có thể kiểm tra khóa nào được sử dụng bởi:

$ ssh -vvv git@github.com

Câu trả lời nên chứa một cái gì đó như thế này:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: ~/.ssh/id_rsa
...
You've successfully authenticated, but GitHub does not provide shell access.

Ngoài ra, có thể xác định quy tắc cho ssh in ~/.ssh/config, ví dụ dựa trên bí danh:

   Host github
      HostName github.com 
      User git
      IdentityFile "~/.ssh/id_rsa"

   Host git
      HostName github.com 
      User git
      IdentityFile "~/.ssh/some_other_id"

Bạn có thể đặt kết nối với các cổng khác nhau, sử dụng tên người dùng khác nhau, v.v. cho mỗi bí danh.


1
Cảm ơn bạn!! Tại một số thời điểm khi tôi nhân bản repo của mình, nó urlđã được đặt thành https://github.com/user/repo.git(không có git@github.com) và vì vậy nó đã từ chối sử dụng khóa SSH của tôi. Có lẽ vì tôi đã nhân bản nó bằng GIthub cho Windows ban đầu (?)
Jedidja

Tôi đã phải đổi url = ssh://github.com/RaphaelBossek/dev-atlassian-jira-proman.gitsang url = ssh://git@github.com/RaphaelBossek/dev-atlassian-jira-proman.gitvà nó hoạt động trở lại
Raphael Bossek

Chết tiệt, bạn thật tuyệt vời. Tôi đã thử rất nhiều giải pháp khác. Url của tôi là https: cũng :(
agrublev

Các -vvvgợi ý là hữu ích cho tôi. Bây giờ tôi thấy rằng nó nói "Kết nối được đóng bởi XXX.XXX.XXX.X cổng 22".
Ryan

Ahhh, DeployHQ nói "BitBucket hiện đang gặp sự cố dịch vụ nhỏ. Vui lòng kiểm tra trang trạng thái của họ để biết thêm thông tin. Status.bitbucket.org " Bingo.
Ryan

123

Tôi đã đối mặt với vấn đề tương tự một lúc trước ...

.git / config của tôi đã có

url = git@github.com:manishnakar/polymer-demo.git

Tôi đã thay thế nó bằng

url = https://github.com/manishnakar/polymer-demo.git 

và nó hoạt động ngay bây giờ :)


8
Làm thế nào là thứ hạng này không cao hơn? git @ github hoàn toàn không hoạt động với tôi
hlitz

3
Nếu chủ sở hữu repo chưa thiết lập sshkhóa thì có thể bạn sẽ gặp vấn đề này. Cách khắc phục như được chỉ định là sử dụng httpsthay thế hoặc cài đặt chủ sở hữu repossh
RyanNerd

@smileham điều này chuyển liên kết xa với repo từ auth dựa trên ssh sang giao thức https (nó sẽ nhắc usr / pwd nếu được yêu cầu)
Vincent Chalmel

Đây là câu trả lời đúng, nó làm việc ngay lập tức cho tôi.
Kingston Fortune

Đối với bất kỳ ai mắc git remote set-url ...lỗi như tôi HOẶC dại dột có Bảng chữ cái Big Case trong tên người dùng của họ (ví dụ PeDro) như tôi (!) Thì nên làm theo. Nó hoạt động :)
Pe Dro

23

Hãy thử loại bỏ biến môi trường GIT_SSH với unset GIT_SSH. Đây là nguyên nhân của vấn đề của tôi.


1
Hoạt động .. Tôi tự hỏi tôi đã lấy biến môi trường GIT_SSH từ đâu :)
StrangeLoop 13/2/2015

1
Đối với cửa sổ, loại bỏ biến môi trường GIT_SSH khỏi menu tùy chọn nâng cao. Đã làm cho tôi.
splintercell

Làm sao? Tôi viết gì trong thiết bị đầu cuối để làm điều đó?
Đặc vụ Zebra

17

Đảm bảo ssh-agent đang chạy bằng cách thực hiện lệnh sau trên thiết bị đầu cuối của bạn:

eval $(ssh-agent -s)

Nguồn: Tài liệu Github


Điều này cũng khắc phục một vấn đề đối với tôi. Cảm ơn
Ahmad

Điều này đã sửa nó cho tôi là tốt. Có điều gì tôi nên làm để đảm bảo nó sẽ chạy trong tương lai không? Giống như đặt nó như là một mục trong .zshrctập tin của tôi ?
Brady Dowling

14

Điều này thường được gây ra do khóa SSH không khớp với điều khiển từ xa.

Các giải pháp:

  1. Đi đến thiết bị đầu cuối và nhập lệnh sau (Mac, Linux) thay thế bằng id email của bạn.

    ssh-keygen -t rsa -C "you@email.com"

  2. Sao chép khóa được tạo bằng lệnh sau bắt đầu từ word ssh.

    mèo ~ / .ssh / id_rsa.pub

  3. Dán nó trong github, bitbucket hoặc gitlab tương ứng với điều khiển từ xa của bạn.
  4. Lưu nó

9

Tôi đã từng gặp vấn đề tương tự.

Lỗi này có nghĩa là bạn chưa chỉ định vị trí URL từ xa mà mã của bạn sẽ được đẩy.

Bạn có thể đặt URL từ xa theo 2 cách (chủ yếu):

  1. Chỉ định URL từ xa thông qua lệnh thực thi trên Git Bash.

    • Điều hướng đến thư mục dự án của bạn

    • Mở Git Bash

    • Thực thi lệnh:

      • git remote set-url origin <https://abc.xyz/USERNAME/REPOSITORY.git>
  2. Đề cập URL từ xa trực tiếp trong tập tin cấu hình

    • Điều hướng đến thư mục dự án của bạn

    • Di chuyển đến .git thư mục

    • Mở tập tin cấu hình trong trình soạn thảo văn bản

    • Sao chép và dán bên dưới các dòng

      • [remote "origin"] url = https://abc.xyz/USERNAME/REPOSITORY.git fetch = +refs/heads/*:refs/remotes/origin/*

Để biết thêm thông tin chi tiết truy cập liên kết này .


8

Sau khi thực hiện một số nghiên cứu, cuối cùng tôi đã có giải pháp cho vấn đề này, bạn đã khai báo một biến môi trường cho đường dẫn plink.exe. Vì vậy, nếu bạn xóa đường dẫn đó, hãy mở lại git bash và thử nhân bản qua SSH, nó sẽ hoạt động.

Tham khảo liên kết này

http://sourceforge.net/p/forge/site-support/2959/#204c


7

Tôi đã có những lỗi giống nhau. Giải pháp như sau: Tôi đã sửa url của mình .git/config. Chỉ cần sao chép từ URL bản sao HTTPS. Đó sẽ là một cái gì đó như thế:

url = https://github.com/*your*git*name*/*your*git*app*.git

Nó đã làm việc.


Nếu tôi đã viết điều này trên tập tin cấu hình của mình dưới windows os, lỗi sẽ phát sinh khác đi ... "/c/Users/asus/.ssh/config: dòng 5: Tùy chọn cấu hình xấu: url"
gumuruh

sử dụng https qua ssh vẫn hoạt động tốt, nó hỏi tên người dùng và mật khẩu
Kiran

4

Một cách giải quyết khác:

Đôi khi điều này xảy ra với tôi vì vấn đề mạng. Tôi không hiểu vấn đề gốc hoàn toàn, nhưng chuyển sang một mạng con khác hoặc sử dụng VPN sẽ giải quyết nó


Chính xác là trường hợp của tôi. Ước gì tôi đã đọc bình luận này. Sau vài giờ gỡ lỗi, đã nghĩ đến việc sử dụng VPN và nó đã hoạt động.
Chaitanya Bapat

4

Nếu bạn sử dụng Gitlab hơn bạn có thể cần phải đăng nhập và chấp nhận các điều khoản mới của Gitlab, trước khi bạn cố gắng kéo hoặc đẩy.


Tại sao các downvote? Cùng ngày tôi đã giải quyết vấn đề của mình, nó có liên quan đến các điều khoản gitlab mới.
Marcelo Agimóvel

Vui lòng xóa downvote của bạn. Đây là một câu trả lời hợp lệ, nó xảy ra sau khi các điều khoản gitlab thay đổi. Chấp nhận các điều khoản mới của gitlab có thể giải quyết vấn đề.
Marcelo Agimóvel

3

Trong tệp .git / config của bạn

[remote "YOUR_APP_NAME"]
    url = git@heroku.com:YOUR_APP_NAME.git
    fetch = +refs/heads/*:refs/remotes/YOUR_APP_NAME/*

Và đơn giản

git push YOUR_APP_NAME master:master 

3

Trong trường hợp của tôi, tôi đã sử dụng khóa ssh với mật khẩu để xác thực bằng github. Tôi đã không thiết lập cuộc thi đúng cách trong Windows (chỉ trong cygwin). Các bước còn thiếu là trỏ biến môi trường git_ssh vào plink.exe. Ngoài ra, bạn cần phải đưa github.com vào plink know_hosts.

   plink github.com
   y
   <then ctrl-c>

Hi vọng điêu nay co ich!

Tôi chắc chắn mong muốn intellij sẽ cho tôi một lỗi hữu ích hơn, hoặc tốt hơn là yêu cầu tôi nhập mật khẩu khóa ssh.


3

Tôi đã có một khóa riêng ssh sai cho Bitbucket cùng với khóa bên phải trong đại lý ssh.

Xóa tất cả các phím trước

ssh-add -D

Sau đó thêm vào đúng phím.

ssh-add ~/.ssh/id_rsa

2

Đối với trường hợp của tôi, tôi đang sử dụng mạng Công ty (không có kết nối internet) trong văn phòng. Để lấy mã từ github, tôi đặt proxy https trong gitbash và sau đó sử dụng https thay vì ssh để kéo mã, nó hoạt động tốt. Tuy nhiên, khi nói đến mã đẩy, proxy https sẽ không hoạt động. Vì vậy, chuyển sang mạng Internet (có kết nối internet) hoặc đặt proxy ssh có thể giải quyết vấn đề.


2

Trên thực tế, tôi đã thử rất nhiều thứ để làm cho nó hoạt động trên Win7, kể từ khi thay đổi bản gốc SSH exectun fron thành bản dựng và ngược lại và cùng một lỗi. Tình cờ, tôi thay đổi nó thành HTTPS trong tệp ".git / config" dưới dạng:

[remote "origin"]
        url = https://github.com/user_name/repository_name.git
        fetch = +refs/heads/*:refs/remotes/origin/*

và cuối cùng nó đã làm việc Vì vậy, có lẽ nó có thể làm việc cho bạn là tốt.


2

Tôi đã có cùng một vấn đề và sau một thời gian tôi thấy tôi là người dùng root (với sudo -s). Có thể giúp đỡ cho ai đó.


Tôi xác nhận rằng ngay cả khi bạn đã thiết lập khóa ssh trên máy của mình và trên BitBucket, nó vẫn sẽ hiển thị lỗi này nếu bạn cố thực hiện 'git pull' bằng lệnh 'sudo'.
ElectroBuddha

2

Nếu sau lệnh "git push origin master" u thấy lỗi "không thể đọc từ kho lưu trữ từ xa" thì hãy thử điều này

1.ssh-keygen -t rsa -b 4096 -C "youremail"
2.eval $(ssh-agent -s)
3.ssh-add ~/.ssh/id_rsa
4.clip < ~/.ssh/id_rsa.pub(it copies the ssh key that has got generated)
5.then go to your remote repository on github and goto settings-> SSH and GPG keys ->new SSH key ->enter any title and paste the copied SSH key and save it
6. now give git push origin master 

2

Tôi đã có một git làm việc hoàn toàn tốt và đột nhiên tôi đã gặp lỗi đó khi tôi cố gắng đẩy lên chủ. Như tôi phát hiện ra, đó là do máy chủ lưu trữ có vấn đề.

Nếu bạn sử dụng GitHub hoặc Bitbucket, bạn có thể dễ dàng kiểm tra trạng thái tại

https://status.github.com/messages hoặc https://status.bitbucket.org/

nhập mô tả hình ảnh ở đây


1

Tôi đã có cùng một lỗi, điều này đưa tôi đến câu trả lời này không giúp tôi. Tôi đã cố gắng tạo một kho lưu trữ "trần" mới lần đầu tiên bằng cách sử dụng các lệnh bên dưới để theo dõi vị trí NTFS:

cd myrepository
git init --bare \\myserver.mycompany.local\myrepository.git
git init
git status
git add .
git status
git commit -m "Initial Commit"
git remote add origin \\myserver.mycompany.local\myrepository.git
git push -u origin master
git status

Vấn đề của tôi hóa ra là sử dụng dấu gạch chéo ngược thay vì dấu gạch chéo về phía trước ở vị trí NTFS khi cố gắng thêm gốc để đặt nhánh ngược dòng được theo dõi (mới).

Tôi đã phải loại bỏ nguồn gốc bằng cách sử dụng:

git remote rm origin

Sau đó thêm nguồn gốc một lần nữa bằng cách sử dụng dấu gạch chéo dự kiến

git remote add origin //myserver.mycompany.local/myrepository.git

Mong rằng điều này sẽ giúp ai đó trong tương lai.


1

Tôi đã gặp lỗi này sau khi thay đổi máy tính. Tôi đang sử dụng SourceTree với Bitbucket.

Vì vậy, tôi đã phải thêm khóa SSH được tạo bởi SourceTree, trên máy tính mới, trong Cài đặt Bitbucket> Bảo mật> Khóa SSH, trong khi kết nối với tài khoản Bitbucket của tôi trên web.


1

Tôi đã giải quyết vấn đề này bằng cách khởi động lại thiết bị đầu cuối (mở một cửa sổ / tab mới).

Vì vậy, nếu bạn không thực sự muốn / cần hiểu vấn đề tiềm ẩn, phương pháp kiểm tra đáng để thử trước khi đào sâu hơn :)


0

Đối với những người có vấn đề này trên một repo từ xa tư nhân. đảm bảo bạn đã chấp nhận thỏa thuận Xcode trên máy chủ từ xa: chúng tôi mất nhiều tuần để tìm ra cách khắc phục này

Sử dụng lệnh này từ dòng lệnh: sudo xcodebuild -license


0

tôi chỉ muốn chia sẻ rằng tôi đã tìm thấy một sửa chữa dễ dàng cho điều đó:

Truy cập bị từ chối. gây tử vong: Không thể đọc từ kho lưu trữ từ xa. Vui lòng đả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.

chỉ cần đăng xuất từ ​​gitlab và đăng nhập lại. Các vấn đề nên được sửa chữa.


0

Khi sử dụng putty / pagete, hãy đảm bảo bạn không quên thêm khóa SSH chính xác vào cuộc thi, nếu không, lỗi này sẽ xuất hiện. TÂT NHIÊN



0

Đi đến thiết bị đầu cuối MINGW32 đặt lệnh này: git nhánh --set-upstream-to = origin / (Tên chi nhánh)


0

Nếu bạn vẫn gặp lỗi tương tự, vui lòng đảm bảo rằng trong cài đặt git-> tab ssh-> ứng dụng khách ssh được sử dụng được đặt thành openSSHnhập mô tả hình ảnh ở đây


0

Theo kinh nghiệm của tôi, một trong những lý do vấn đề này xảy ra là do bạn có kết nối internet không ổn định .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.