GitHub: Quyền bị từ chối (khóa công khai). gây tử vong: Kết thúc từ xa treo lên bất ngờ


197

Tôi đã làm theo các hướng dẫn dưới đây để tải lên một dự án.

Thiết lập toàn cầu:

 Download and install Git
  git config --global user.name "Your Name"
  git config --global user.email tirenga@gmail.com
  Add your public key


Next steps:

  mkdir tirengarfio
  cd tirengarfio
  git init
  touch README
  git add README
  git commit -m 'first commit'
  git remote add origin git@github.com:tirenga/tirenga.git
  git push origin master

Nhưng tôi nhận được lỗi này:

Quyền bị từ chối (khóa công khai). gây tử vong: Kết thúc từ xa treo lên bất ngờ

Câu trả lời:


24

Đối với tôi, vấn đề là việc thực hiện bản sao thông qua sudo.

Nếu bạn sao chép vào một thư mục mà bạn có sự cho phép của người dùng (/ home / user / git) thì nó sẽ hoạt động tốt.

(Giải thích: Chạy lệnh dưới dạng superuser sẽ không hoạt động với cùng khóa chung với chạy lệnh như người dùng. Do đó, Github đã từ chối kết nối.)

Giải pháp này yêu cầu khóa SSH đã được thiết lập: https://help.github.com/articles/generating-ssh-keys


1
giải pháp này có vẻ rất gần với những gì đã được đăng bởi người học_19
Erik

125

Tôi đã phải thêm khóa công khai của mình vào github. https://help.github.com/articles/generating-ssh-keys


3
Trong trường hợp nếu bạn đang chạy máy linux, việc sao chép nội dung của tệp id_rsa.pub có thể khó khăn nếu bạn đang sử dụng emacs hoặc nano. Hãy thử sao chép bằng trình soạn thảo văn bản (Notepad, TextEdit hoặc gedit sẽ hoạt động tốt). Nếu bạn không có bất kỳ thứ gì trong số này, thì bạn có thể sử dụng vim.
Gokul NK

4
@GokulNK Cách khác là sử dụng xclip, như trang khuyến nghị.
w4etwetewtwet

7
cat ~/.ssh/id_rsa.pubcó thể là một lựa chọn? : p
torr 27/12/13

bạn có thể sử dụng pbcopy < ~/.ssh/id_rsa.pubtrong OS X và sau đó dán nó ( cmd+v) vào trang github.
dùng3648895

28

Vâng, đó là một vấn đề khóa công khai. Tôi là người dùng windows và trang bên dưới giúp tôi giải quyết vấn đề này.

http://help.github.com/win-set-up-git/

chính xác hơn là liên kết này sẽ hữu ích

https://help.github.com/articles/error- allow-denied-publickey


57
Trong khi về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo.
Lix

28

sau khi bạn tạo cặp khóa RSA, bạn phải thêm nó vào SSH bằng cách sử dụng:

ssh-add ~/.ssh/id_rsa

hoặc bất cứ nơi nào bạn đã tạo cặp khóa rsa của bạn.


Phao cứu sinh! Anh nói trúng phóc. Cảm ơn bạn
Tash Pemhiwa

Đồng ý, điều quan trọng trước tiên là kiểm tra xem ssh-agent có đang chạy hay không (tài liệu của GitHub có làm điều đó không) và liệu khóa có được thêm vào trong khóa không. Mặc dù vậy, một cái gì đó đáng để kiểm tra, vì nó có thể ngăn khóa được sử dụng ngay cả khi nó nằm trong khóa của ssh-agent, là chế độ truy cập phù hợp cho khóa riêng : chmod 600 ~/.ssh/id_rsavề cơ bản là 0600 ( về cơ bản).
chikamichi 16/07/2016

18

Nhập lệnh sau bằng tên người dùng và tên kho lưu trữ của bạn:

git clone https://github.com/{user name}/{repo name}

trong Ubuntu này hoạt động hoàn hảo.


Tôi nghĩ rằng giao thức https là cần thiết để có kết nối an toàn, đây là lý do tại sao nó hoạt động. Git @ github .. KHÔNG an toàn cho máy.
Timo

16

Tôi đã có một giải pháp sau một thời gian dài trong hướng dẫn.

Tôi đã làm theo hướng dẫn của github trên liên kết này -> https://help.github.com/articles/error- allow-denied-publickey và tôi đã có thể kết nối theo từng bước. Nhưng khi tôi đang cố gắng git push -u master master thì tôi đã gặp lỗi này:

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

Đó là cách tôi đã sửa nó !! Chuyển đến thư mục dự án bằng Terminal và kiểm tra nó

$git remote -v

Bạn sẽ nhận được một cái gì đó như thế này:

origin  ssh://git@github.com/yourGithubUserName/yourRepo.git (fetch)
origin  ssh://git@github.com/yourGithubUserName/yourRepo.git (push)

Nếu bạn đang sử dụng bất cứ thứ gì khác thì git@github.com , hãy mở tệp cấu hình trên thư mục git bằng cách gõ lệnh:

vi .git/config

Và cấu hình dòng

[remote "origin"]

url = ssh://git@github.com/yourGithubUserName/yourRepo.git

fetch = +refs/heads/*:refs/remotes/origin/

Đối với tôi, nó thực sự hoạt động bằng cách thay thế git@github.com bằng <myusername> @ github.com
Eduard Feicho

Lệnh "git remote -v" không phải là lệnh tôi đã thấy trước đây và hóa ra đó là chìa khóa để hiểu lý do tại sao một trong những repos của tôi hoạt động, trong khi cái còn lại trả về "Quyền bị từ chối (khóa công khai)" khi tôi đã thử chạy "git ls-remote". Rất hữu ích. Cảm ơn.
Kevin

6

Trong trường hợp của tôi, tôi phải thiết lập khóa chung cho một người dùng khác, vì tôi đã có một khóa cho người dùng chính của mình. một khi tôi chuyển người dùng và thực hiện các lệnh trong liên kết ở trên, tôi có thể thực hiện thiết lập cho máy chủ thử nghiệm của mình mà không gặp vấn đề gì.


Vấn đề tương tự - Tôi đã đăng nhập bằng root (và bỏ qua điều này) không phải là người dùng thực tế được thiết lập với SSH. Không thể có được một cam kết làm việc cho bất cứ điều gì. Thay đổi trở lại để giải quyết vấn đề người dùng giải quyết!
Richard Hollis

1
Chắc chắn thiếu lời giải thích cho cách thực sự sửa chữa.
Richard

Tôi không cần phải đánh vần nó, đây là cho bạn Richard! Tôi đã sử dụng tài khoản không root của tôi. Tôi đã phải thực hiện lệnh từ url trợ giúp của github ( help.github.com/articles/generating-ssh-keys#pl platform-linux ) với tiền tố sudo.
Dan Power

5

Tôi đã có vấn đề này, nhưng không có giải pháp nào ở trên có hiệu quả. Tôi có thể nhân bản và tìm nạp nhưng không thể đẩy. Cuối cùng, tôi đã tìm ra vấn đề nằm ở chỗ urltôi .git/config, nó nên là:

git@github.com:<username>/<project>

(không ssh://github.com/<username>/<project>.githoặc https://github.com/<username>/<project>.git).


2
Đối với kết nối SSH, git@phần này là phép màu. Vì vậy, ssh://git@github.com/username/project.gitcũng hoạt động.
giám mục

.git thực sự quan trọng. Giải pháp này hoạt động hoàn hảo.
Onur Gotker

5

Cho rằng không có câu trả lời nào ở đây có hiệu quả với tôi, cuối cùng tôi đã theo dõi vấn đề của mình khi kết nối với Bitbucket (hoặc Github, không thành vấn đề trong trường hợp này) với ssh -vT git@bitbucket.org.

Trong trường hợp của tôi, lỗi là do sử dụng khóa DSA thay vì RSA và rõ ràng máy khách SSH của tôi không còn cho phép điều đó nữa.

debug1: Bỏ qua khóa ssh-dss /c/Users/USER/.ssh/id_dsa vì không có trong PubkeyAcceptedKeyTypes

Giải pháp là thêm phần này vào .ssh / config:

Host *
    PubkeyAcceptedKeyTypes +ssh-dss

Điều này thanh lịch bổ sung loại khóa ssh-dss cho tất cả các loại khóa công khai được chấp nhận hiện có và sau khi hoàn thành, git giờ có thể ssh vào Bitbucket không có vấn đề gì.


Đây là giải pháp cho tôi trên một máy không ổn định Debian vào tháng 12 năm 2015. Tôi đã giới hạn nó ở "Máy chủ bitbucket.org" vì tôi đã có một mục cho điều đó để buộc lựa chọn danh tính của mình.
bitmusher

3

Vấn đề của tôi là tôi đã cố gắng cung cấp cho khóa ssh của mình một TÊN CỤ THỂ mỗi khi tôi nhập ssh-keygenvào thiết bị đầu cuối mac của mình.

Tôi đã giải quyết vấn đề bằng cách chỉ để lại tên mà "ssh-keygen" tạo ra = id_rsa. Bạn sẽ kết thúc với 2 khóa trong thư mục .ssh trên máy mac id_rsa, đó là khóa riêng của bạn và id_rsa.pubđó là khóa chung của bạn. Sau đó, tôi đã sao chép và lưu mã từ id_rsa.pubvào cài đặt tài khoản GitHub của mình và đó là nó. Vấn đề được giải quyết.


Tương tự cho tôi. Để trống tên đã khắc phục vấn đề. Cảm ơn.
Berk

Man, bạn đã làm một ngày của tôi! 2 tuần với giao diện điều khiển vì tên khóa cụ thể! Cảm ơn!
eilas

Vui vì nó đã giúp! @eilas
paopao

Lý do làm việc này là bởi vì trên hầu hết các hệ thống các phím tin mặc định ( ~/.ssh/id_rsa, ~/.ssh/id_dsa~/.ssh/identity) sẽ được tự động thêm vào đại lý xác thực SSH.
maffo


2

Thêm khóa công khai là giải pháp. Để tạo khóa ssh: https://help.github.com/articles/generating-ssh-keys có hướng dẫn từng bước.

Tuy nhiên, vấn đề có thể tồn tại nếu khóa không được tạo theo cách chính xác. Tôi thấy đây cũng là một liên kết hữu ích: https://help.github.com/articles/error- allow-denied-publickey

Trong trường hợp của tôi, vấn đề là tôi đã tạo khóa ssh mà không sử dụng sudo nhưng khi sử dụng lệnh git tôi cần sử dụng sudo. Nhận xét này trong liên kết ở trên "Nếu bạn tạo khóa SSH mà không có sudo, thì khi bạn cố gắng sử dụng lệnh như sudo git đẩy, bạn sẽ không sử dụng khóa SSH bạn đã tạo." đã giúp tôi

Vì vậy, giải pháp là tôi phải sử dụng sudo với cả lệnh tạo khóa và lệnh git. Hoặc đối với những người khác, khi họ không cần sudo ở bất cứ đâu, không sử dụng nó trong bất kỳ hai bước nào. (tạo khóa và lệnh git).


1

Tôi gặp phải một vấn đề tương tự khi chạy SSH hoặc Git Clone trong Windows. Những phát hiện sau đây giúp giải quyết vấn đề của tôi:

  • Khi bạn chạy cài đặt rhc rhc, cài đặt, hoặc các phương thức ssh khác để tạo khóa ssh, nó sẽ tạo tệp khóa riêng id_rsa trong thư mục .ssh trong thư mục nhà của bạn, mặc định là C: \ User \ UserID
  • Git cho windows có thư mục .ssh riêng trong thư mục cài đặt. Khi bạn chạy git / ssh, nó sẽ tìm tệp tin riêng tư id_rsa trong thư mục này
  • Đã giải quyết vấn đề bằng cách sao chép id_rsa từ thư mục home .ssh vào thư mục .ssh trong thư mục cài đặt git

Ngoài ra, tôi nghĩ rằng có một cách để mà Tell Tell git sử dụng thư mục .ssh mặc định trong thư mục nhà nhưng vẫn cần phải tìm ra cách.


1

Đối với tôi, nó hoạt động như thế này:

Trong GitHub tôi đã thay đổi sshliên kết thành https, và sau đó đưa ra các lệnh sau:

$ git init
$ git remote add origin https:...
$ git add .
$ git commit -m "first commit"
$ git push origin master

0

Sử dụng Ubuntu trên cửa hàng windows

hệ thống con windows cho linux

, git đẩy của bạn sẽ hoạt động trên các tài khoản khác nhau.


0

Nếu bạn đang sử dụng máy linux thì hãy kiểm tra,

  • bạn đã cài đặt Openssh chưa
  • nếu bạn làm như vậy, thì bạn có một khóa công khai hiện có nếu không bạn sẽ phải tạo một khóa.
  • là khóa công khai của bạn được thêm vào tài khoản github của bạn.

Tạo các khóa SSH mới và thêm chúng vào tài khoản Github của tôi đã giải quyết vấn đề của tôi. Bạn có thể nhìn vào trang này để biết thêm chi tiết. Trợ giúp .


0

Bạn có thể thử thay đổi loại kết nối của mình thành chi nhánh từ ssh sang https.

  1. nano project_path/.git/config
  2. Thay thế git@github.com:username/repository.gitthànhhttps://username@github.com/username/repository_name.git
  3. Lưu tập tin ctrl+o

Sau đó, bạn có thể thử git pullmà không cần khóa công khai



-1

Cách nhanh chóng để khắc phục điều này nếu bạn đang sử dụng máy Mac là đăng xuất khỏi ứng dụng OSX và đăng nhập lại.


-1

Vấn đề của tôi là nó không hoạt động với cụm mật khẩu trên khóa riêng của tôi.

Hy vọng rằng sẽ giúp được ai đó.



-3

Tôi đã thử các giải pháp được đề cập nhưng vẫn thất bại. Tôi đã tìm thấy giải pháp cuối cùng có hiệu quả với tôi ở đây - xóa sau đó thêm lại liên kết từ xa


-4

Tôi đã có cùng một vấn đề trên windows. Tôi đã chuyển từ SSH sang HTTPS và chạy Git PUSH.

git push -u origin master
Username for 'https://github.com': <Github login email>
Password for <Github login>: xxx

Thành công! hi vọng điêu nay co ich.


Trong khi điều này có thể là một công việc xung quanh, nó không giải quyết vấn đề ban đầu.
maffo
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.