Git: Quyền bị từ chối (khóa công khai) gây tử vong - Không thể đọc từ kho lưu trữ từ xa. trong khi nhân bản kho Git


152

Tôi không thể sao chép kho Git và gặp lỗi này:

krishna.soni@KRISHNACHANDRAS /c/Projects $ git clone http://stage.abc.com:10088/pqr
http://<url>/<repository> Cloning into '<repository>'... fatal: could not read Username for 'http://<url>': No such file or directory

Tôi đã đọc Bitbucket, Windows và chết người: không thể đọc Mật khẩu cho , nhưng vẫn có vấn đề.

Tôi đã tiến hành thêm nhưng bây giờ nhận được lỗi này

sh.exe": chown: command not found

krishna.soni@KRISHNACHANDRAS /c
$ git clone ssh://krishna.sonipayu.in@stage.payupaisa.
/projects
Cloning into 'C:/projects'...
Permission denied (publickey).
fatal: Could not read from remote repository.

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

> krishna.soni@KRISHNACHANDRAS /c
>     $ git clone ssh:<url>
>     ts
>     Cloning into 'C:/projects'...
>     Permission denied (publickey).
>     fatal: Could not read from remote repository.

Please make sure you have the correct access rights

và kho lưu trữ tồn tại.


Bạn có chắc chắn đó là một kho lưu trữ git?
gravetii

Vâng, đúng vậy . Tôi mới sử dụng git, nhận được lỗi này trong khi nhân bản. Tôi đã thêm email và tên trong tệp cấu hình toàn cầu bằng lệnh git config --global user.name "John Doe" $ git config --global user.email johndoe@example.com
KCS

Lý do chính là repo không thể nhận ra bạn là người dùng máy chủ git. Bạn có thể truy cập máy chủ thông qua ssh?
Малъ Скрылевъ

Nếu ai đó gặp phải vấn đề này trong khi sử dụng Github, hãy làm theo các bước được đề cập ở đây: help.github.com/en/articles/ vì Nó hoạt động với tôi.
Rounak

Câu trả lời:


68

Có vẻ như vấn đề về quyền - không phải là vấn đề của Windows 7.

Khóa ssh của bạn không được cấp phép - Permission denied (publickey).

Bạn cần tạo khóa ssh công khai và yêu cầu quản trị viên của kho Git thêm sshkhóa công khai

Thông tin về cách thực hiện việc này: Lưu khóa ssh không thành công


27
Điều này thật kỳ lạ. Các kho lưu trữ là công khai và tôi đang nhân bản kho lưu trữ công cộng. Tôi không chắc tại sao tôi nên yêu cầu quản trị viên cho phép sao chép kho lưu trữ công khai của anh ấy / cô ấy được lưu trữ trên Github.
Shailen

5
Vâng, là sai, bạn không cần phải hỏi quản trị viên bất cứ điều gì, là một vấn đề với git địa phương.
Ivan Castellanos

3
Tại sao nó khó? Tôi đã thành công nhưng nó không đau.
Niklas R.

9
Bạn không cần phải ủy quyền khóa cho repos công khai, chỉ cần sử dụng giao thức HTTPS: stackoverflow.com/a/33072867/1385678
Diego V

224

Đối với những người đến đây chỉ cố gắng để có được kho lưu trữ nhưng không quan tâm đến giao thức (ssh / https), bạn có thể chỉ muốn sử dụng https thay vì ssh (nếu được hỗ trợ).

Vì vậy, ví dụ bạn sử dụng

git clone https://github.com/%REPOSITORYFOLDER%/%REPOSITORYNAME%.git

thay vì

git clone git@github.com:%REPOSITORYFOLDER%/%REPOSITORYNAME%.git

6
Đây là kế hoạch dự phòng thích hợp nhất nếu quyền ssh không được giải quyết hoặc bạn muốn bỏ qua phần đó.
Wahib Ul Haq

13
Câu trả lời này đã thay đổi cơ chế từ sshsang https. Nó không giải quyết vấn đề ban đầu bằng cách sử dụng ssh để truy cập kho lưu trữ. Tôi tự hỏi làm thế nào điều này có thể tiếp tục được nêu lên như một câu trả lời tốt cho câu hỏi. Các câu trả lời khác dưới đây đang giải quyết nó đúng.
Armin

3
Vấn đề ban đầu là một người mới chơi git cố gắng sao chép một repo. Nếu mục tiêu là kéo xuống một repo công khai, đây là câu trả lời hiệu quả nhanh nhất.
Vivek Chavda

Cảm ơn bạn đã cứu tôi khỏi tự tử. Bởi, điều này có thể được sử dụng cho một repo riêng cho rằng bạn có tên người dùng và mật khẩu.
HÓA ĐƠN

81

Nếu vẫn còn vấn đề xung quanh quyền truy cập sau khi tạo SSH và thêm nó vào tài khoản Bitbucket của bạn hoặc bất cứ nơi nào, bạn cần thực hiện các thao tác sau trong thiết bị đầu cuối trên GitBash, OSX hoặc Linux:

# Lists already added identities (‘ssh keys’)
ssh-add -l

Sau đó, nếu bạn không thấy khóa của mình được liệt kê, hãy thêm nó bằng dòng sau (thay thế identitybằng tên thật của nó):

# Add a new identity
ssh-add ~/.ssh/identity

Điều này làm việc cho tôi.


3
ssh-add ~/.ssh/identitylỗi trả về/Users/lee/.ssh/identity: No such file or directory
lee

14
Chạy "ssh-add" từ "~ / .ssh" (và nhập cụm mật khẩu cho tệp "~ / .ssh / id_rsa" của tôi khi được nhắc) đã giải quyết vấn đề cho tôi.
James Furey

1
Tôi đã có thể kéo repo của mình nhưng không đẩy mà không làm điều này, chúc mừng!
Dimitar Nestorov

@james Câu trả lời của Furey đã giúp tôi xác định url ssh là một repo git.
hâm mộ YSR

2
làm việc cho tôi ... sau nhiều giờ đổ mồ hôi và thử những thứ khác nhau. Chỉ có điều là thay vì danh tính cuối cùng sử dụng tên trong hệ thống của riêng bạn. Chuyển đến thư mục .ssh bằng cách thực hiện lệnh cd trong terminal và sau đó nhập lệnh 'ls' trong terminal. Và sau đó phát lại "danh tính" từ lệnh trên với tệp của riêng bạn. Đi đến thiết bị đầu cuối sourcetree và: cd ~sau cd .sshđó ls(sao chép tên mà không có phần mở rộng .pub) sau đó (chạy lệnh này)ssh-add ~/.ssh/(copied name)
Tejas

21

Tôi đã đối mặt với cùng một vấn đề với GitHub . Đây là cách giải quyết nó!

  1. Tạo khóa SSH trên máy tính của bạn như được mô tả ở đây: Tạo khóa SSH .
  2. Đăng nhập tài khoản GitHub của bạn: Đăng nhập GitHub .
  3. Trong tài khoản của bạn, hãy thêm Khóa SSH mới được tạo: Khóa SSH tài khoản của tôi .
  4. Hãy thử lại với git clonedự án.

Làm việc như quyến rũ !!
Prakhar

1
Bây giờ tôi đã sử dụng câu trả lời này trên 3 hệ điều hành mới trong 5 năm qua và nó hoạt động hoàn hảo mọi lúc.
kotoole

Rõ ràng High Sierra yêu cầu người dùng đăng ký khóa trong tệp .ssh / config. El Capitan bằng cách nào đó quản lý mà không có nó.
DSomnus

14

Tôi đã gặp sự cố này trên máy Mac - trong khi tôi thiết lập SSH chính xác để truy cập vào kho lưu trữ Git của mình, sau khi khởi động lại (và đôi khi máy Mac bị bế tắc), tất cả thông tin đăng nhập của tôi đã bị xóa. Rõ ràng, vì một số lý do, khóa pub được đặt thành 644 khiến cho nó bị xóa khỏi móc khóa. Để tái hiện:

  • chmod 600 khóa công khai
  • ssh-add ~/.ssh/[your private key]- điều này sẽ hiển thị danh tính đã được thêm vào. Tệp chính bạn muốn là tệp không có phần mở rộng .pub.
  • ssh-add -l sẽ cho bạn thấy danh tính mới được thêm vào

chỉnh sửa: rõ ràng MacOS có xu hướng xóa các khóa - sau khi tải xuống bản cập nhật High Sierra (nhưng tôi chưa cài đặt nó) khóa của tôi đã bị xóa và tôi phải thêm lại thông qua ssh-add


2
Giải pháp này vẫn chính xác sau khi bạn nâng cấp macOS High Sierra lên Phiên bản 10.13.1. Cụ thể, Sourcetree là ứng dụng nổi lên vấn đề khi tôi cố gắng đẩy một cam kết lên một kho lưu trữ từ xa. Các bước trên đã khắc phục sự cố cho tôi.
Paul Boneville

Tôi đã có vấn đề này vào ngày 10.13.4 và giải pháp này hiệu quả với tôi.
Andrew Eble

11

Tôi cũng phải đối mặt với vấn đề tương tự. Tôi đã làm như sau và nó làm việc cho tôi:

  1. Tạo khóa từ ứng dụng khách GIT GUI trên Windows. Sao chép khóa này vào clipboard.
  2. Mở tài khoản của bạn trên bitBucket/trang web git và thêm khóa này vào hồ sơ của bạn. Bằng cách này, máy chủ biết rằng bạn là người dùng hợp pháp truy cập từ một hệ thống hợp pháp.
  3. Đó là nó. Tất cả các lệnh đẩy làm việc cho tôi kể từ đó.

Điều này đã giúp cho tôi thấy rằng tôi đã tạo ra RSA của tôi mà không cần chạy Git Bash as Administrator mà đặt khóa RSA của tôi trong "h" ổ đĩa: oops:
tylerlindell

7

Đối với tôi, khi tôi muốn sao chép từ kho lưu trữ của mình, tôi đã nhận được thông báo tương tự trước khi "Quyền bị từ chối (khóa công khai) gây tử vong: Không thể đọc từ kho lưu trữ từ xa". Giải pháp cho trường hợp của tôi là không sử dụng sudo trước khi sao chép .


Cảm ơn rất nhiều @mustapha bạn thực sự tiết kiệm thời gian của tôi.
vinay kumar

7

Github (hoặc Bitbucket) không thể tìm thấy khóa ssh của bạn trong máy chủ của họ.

Chỉ cần thêm chìa khóa của bạn trong cài đặt tài khoản của bạn.


6

Nếu bạn tạo khóa ssh công khai mới và chèn nó vào bitbucket hoặc github và

nó không giúp được gì - hãy thử khởi động lại PC của bạn . Nó đã giúp đỡ tôi!!


Cảm ơn bạn, đây là những gì tôi cần phải làm là tốt.
Steph

Tôi đã phải đóng thiết bị đầu cuối và mở một cái mới để thấy nó hoạt động.
rahul

5

Bạn cần tạo một khóa ssh mới bằng cách chạy ssh-keygen -t rsa.


Tài liệu tham khảo @Joel Heroku bị xóa. Cảm ơn
biniam

4

Tôi đã nhận được lỗi ...

Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

... khi tôi đang cố gắng liên lạc từ lời nhắc của Git Bash tới Bitbucket sau khi máy tính xách tay của tôi chết vì bản cập nhật Windows 10 xấu và được đưa trở lại cài đặt gốc. Tôi đã khôi phục tất cả các tập tin ssh của tôi từ một bản sao lưu.

Nguyên nhân của lỗi hóa ra là không khớp trong tên tài khoản Windows của tôi sau khi máy tính được xây dựng lại. Tôi đã học được rằng tệp khóa công khai id_rsa.pubkết thúc bằng một chuỗi dễ đọc bao gồm tên tài khoản Windows của tôi theo sau là một@ dấu hiệu và sau đó là tên máy tính.

Khi tôi thiết lập máy tính ban đầu, tôi đã tạo tên tài khoản Windows bao gồm tên đệm ban đầu nhưng khi máy tính của tôi được đặt lại về cài đặt gốc, anh chàng DevOps mới của chúng tôi đã tạo tên tài khoản của tôi mà không có chữ cái đầu của tôi.

Để giải quyết vấn đề, tôi chỉ cần chỉnh sửa tệp khóa công khai của mình id_rsa.pubvà xóa tên đệm ban đầu trong tên của tôi ở cuối. Tôi đã bị mắc kẹt với cùng tên máy tính nên không sao. Tôi đã sao chép nội dung tập tin vào clipboard của Windows. Sau đó, tôi đã đăng nhập vào Bitbucket, đi đến Cài đặt Bitbucket dưới hình đại diện của mình và thêm khóa công khai mới nơi tôi đã dán vào nội dung mới.

Quay lại dấu nhắc Git Bash, tôi xác nhận rằng nó hiện đã hoạt động bằng cách nhập lệnh ...

ssh -T git@bitbucket.org

... Và tôi đã nhận lại một tin nhắn mà tôi đã đăng nhập.


4

Trong macOS / Linux (Ubuntu):

1. Để xác thực, bạn cần thêm phần công khai của cặp khóa SSH vào bitbucket từ trong cài đặt người dùng của mình: Cài đặt người dùng -> Khóa SSH

Bạn sẽ tìm thấy phần công khai đã nói trong thư mục ~ / .ssh của bạn, thường id_rsa.pub. lưu ý .pubmột phần của tên tập tin cho công chúng. nó sẽ giúp bạn tạo một cái nếu bạn chưa có

Bạn chưa hoàn thành ...

2. Bạn cần cho hệ thống của mình biết sử dụng khóa nào với máy chủ từ xa, vì vậy hãy thêm các dòng này vào tệp ~ / .ssh / config của bạn

Host bitbucket.org
 IdentityFile ~/.ssh/PRIVATE_KEY_FILE_NAME

Trong trường hợp PRIVATE_KEY_FILE_NAMElà tên của phần riêng của cặp khóa SSH của bạn, nếu bạn đã không sai lầm với nó, thường là tên mặc định của nó là: id_rsa trong trường hợp này thay thế PRIVATE_KEY_FILE_NAMEở trên với id_rsa(khóa riêng KHÔNG có một .pubphần mở rộng)


Lưu ý, bạn đã viết sai chính tả "Ubuntu" - các chỉnh sửa phải có ít nhất 6 ký tự để tôi không thể đề xuất chỉnh sửa :)
Misha Nasledov

4

Chủ đề hữu ích và tôi không mang nhiều cái mới vào bàn. Bước tôi đã thực hiện cũng là một phần của mô tả Maxime chỉ ra một cách hữu ích nhưng một số có thể bỏ qua nó. Phần này là Thêm khóa SSH của bạn vào ssh-agent .

Tôi đã tạo khóa ssh của mình nhưng sau khi khởi động lại, tôi không thể sao chép một trong các kho lưu trữ của riêng mình.

Tôi đã phải khởi động ssh-agent và thêm khóa riêng vào tác nhân này để sao chép.

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

3

Tôi gặp vấn đề tương tự trong khi chạy git clonelệnh từ dòng lệnh windows. Nhưng lệnh chạy thành công từ Git Bash .


3

Tôi đã có vấn đề tương tự. Tôi thay đổi các phím ssh và khởi động lại và thử tất cả các giải pháp 'n' khác. Nhưng vấn đề thực sự đối với tôi là giao thức mặc định gitlab của chúng tôi đã thay đổi từ ssh sang https.

kiểm tra url từ xa với

git remote -v

thay đổi url từ xa

git remote set-url origin https://URL

Thật hoàn hảo, chúng ta không cần phải cấu hình ssh.
Rohit Parte

Tôi đã phải làm như vậy. Khóa ssh không hoạt động với tôi trong trường hợp này
Dani

gây tử vong: không thể truy cập ' bitbucket.org:xxxxxx/xxxxxxxxt ': Số cổng kết thúc bằng 'r'
Nosequeweaponer

2

Nếu tất cả đều thất bại, như trường hợp của tôi, Gỡ cài đặt GIT, cài đặt lại. Đối với một số lý do này sửa chữa.

PS

  1. Tôi đã thử tạo Khóa mới và Cập nhật tại các khóa công khai SSH
  2. Cũng đã cố gắng xóa tất cả các khóa và cố gắng tạo một khóa mới.
  3. Và KHÔNG, không có gì sai với .gitconfig của tôi

2

sửa lỗi cho hubcông cụ cli:

  • git config --global hub.protocol https về lâu dài
  • git remote add OOPS https://github.com/isomorphisms/go.git&& git push OOPSđể khắc phục ngay lập tức

Lỗi này xảy ra với hubcông cụ dòng lệnh do hub.protocolgiá trị git-config mặc định sai của chúng . Họ đặt repos thành

git://github.com/schacon/ticgit.git

thay vì những gì github thực sự chấp nhận, cụ thể là https://github.com/schacon/ticgit.git.


Đọc LESS=+/"HTTPS instead" man hubsẽ giải thích lệnh "sửa chữa dài hạn" ở trên đến từ đâu.


Điều này đã cứu ngày của tôi!
Jay Lee

1

Trong khi nhân bản, tôi đã gặp một vấn đề tương tự [LRI của tôi: Quyền bị từ chối (khóa công khai). 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 .. vv]

- Tôi đã sử dụng bitBucket / UBUNTU14.04 trong trường hợp của mình, nhưng ALREADY có một tập hợp các tệp chính mà tôi đã tạo trước đây VÀ tôi đã thay đổi tên của các tệp. Tôi chỉ đơn giản là SAO CHÉP các tập tin vào id_rsa & id_rsa.pub dạng tên tiêu chuẩn. Sau đó tôi chạy lại lệnh với vấn đề.

OBTW : Tôi cũng có thể đã sử dụng lời nhắc mật khẩu bằng cách sử dụng bản sao kiểu HTTP.


0

Tôi đã có một vấn đề tương tự trên linux. Tôi đã giải quyết vấn đề bằng cách đăng nhập vào máy chủ github và tạo khóa triển khai. Đó là trong cài đặt cho kho lưu trữ. Sau đó, tôi đã sao chép và dán khóa công khai của mình (thường là trong ~ / .ssh / id_rsa.pub, nhưng cấu hình của bạn có thể khác). Có một hộp kiểm để cung cấp quyền truy cập ghi khóa này. Nhấp vào nó (trừ khi bạn đang sử dụng git để chỉ triển khai, trong trường hợp đó, không nhấp vào nó).


0

Tôi đã có những lỗi giống nhau. Giải pháp của tôi là đăng xuất và đăng nhập lại vì ssh-agent của tôi đã không đồng bộ với khóa ssh từ xa.

Thêm điều này vào đây chỉ trong trường hợp bất cứ ai đã thấy rằng các câu trả lời khác dường như không áp dụng cho tình huống của họ.


0

Tôi đã phải đối mặt với cùng một vấn đề trong khi thiết lập ssh cho gitlab. Tôi đã có ssh cho githubvà tôi không thể ghi đè lên điều đó. Các bước làm việc cho tôi là:

  1. Tạo SSH với đường dẫn mới và thêm nó vào danh sách ssh ssh-add /path/to/new/id_rsa.
  2. Tạo một tập tin có tên configtrong ~/.ssh/việc sử dụng. Tôi đã sử dụng vi ~/.ssh/config/.
  3. Thêm phần này vào tập tin vừa tạo

# GitLab.com server Host gitlab.com RSAAuthentication yes IdentityFile /path/to/new/id_rsa

  1. Lưu và thoát.

Sau đó khởi động lại thiết bị đầu cuối và thử đẩy, nó sẽ hoạt động


0

Nếu bạn muốn sao chép các dự án nguồn mở để gửi Yêu cầu Kéo:

Tôi muốn sao chép một dự án nguồn mở để tôi có thể gửi một số yêu cầu kéo. Vấn đề là tôi đã không có sự cho phép từ chủ dự án. Không vấn đề gì, vì ý định của tôi là gửi PR, đây là một lựa chọn khả thi:

Giải pháp của tôi:

  1. Kho lưu trữ ngã ba

Ngã ba Repo

  1. Sau đó sao chép từ kho lưu trữ của bạn. Bản sao từ Repo ngã ba

  2. Làm việc trên các tính năng của bạn và sau đó gửi yêu cầu kéo.


0

Bạn có thể thử thêm khóa ssh vào móc khóa riêng của mình. Nó làm việc cho tôi

ssh-add -K ~/.ssh/[your-private-key]

"tùy chọn không xác định - K"
Jiří Mistravský

0

Giải pháp: Trên máy chủ, bạn đang cố gắng sao chép hoặc đẩy từ cat ~ / .ssh / id_rsa.pub Truy cập GitHub, cài đặt, Khóa SSH và GPG , Khóa dán khóa SSH mới .


0

Tôi thấy sự sai sót này có rất nhiều lý do khác nhau. Tôi đã gặp lỗi tương tự khi cố gắng thiết lập cục bộ một kho lưu trữ khác cùng với kho lưu trữ đã hoạt động hoàn toàn với ssh, v.v. và kết nối nó với cùng một máy chủ, nhưng kho lưu trữ khác. Không có câu trả lời ở đây để được tìm thấy, nhưng tôi đã tìm ra nó. Vì vậy, tôi gửi nó. Hy vọng giúp được ai đó.

git remote add origin git@git.ourserver.com:teamalpha/repositorytwo.git

0

nếu không có câu trả lời nào trong số này giúp

  1. bạn đang sử dụng Windows
  2. bạn tạo khóa bằng Putty hoặc bạn đã cài đặt Putty trên PC
  3. bạn tạo khóa của mình bằng CMD hoặc PowerShell

Thử

  1. xóa chìa khóa của bạn
  2. tìm kiếm trên windows cho Git Bash, sau đó tạo khóa mới với dòng lệnh Git Bash
  3. thêm khóa công khai vào Repo trực tuyến của bạn

Sau đó, bạn sẽ tìm thấy sau khi git clone và gõ yes để xác nhận, nó sẽ bắt đầu sao chép


-2

Nó có thể ngu ngốc nhưng nó đã xảy ra với chúng tôi:

Nếu bạn đang sử dụng bitbucket và Sourcetree và bạn chỉ cần sao chép, dán URL clone vào hộp thoại repo mới, nó sẽ hiển thị cùng một lỗi khi kéo hoặc đẩy.

Đảm bảo bạn xóa nội dung 'git clone' trước URL.

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.