Thông báo lỗi GitHub - Quyền bị từ chối (khóa công khai)


701

Bất cứ ai cũng nhìn thấy lỗi này và biết phải làm gì?

Tôi đang sử dụng thiết bị đầu cuối, tôi đang ở trong thư mục gốc, kho lưu trữ GitHub tồn tại và tôi không biết phải làm gì bây giờ.

> git push -u origin master
Permission denied (publickey).
fatal: Could not read from remote repository.

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


2
Câu hỏi tương tự: stackoverflow.com/questions/16074832/
Mạnh

1
Có thể là vấn đề cấp phép với .ssh và khóa tự động. Ssh là khá nghiêm ngặt, google nó.
Karl Morrison


giống như câu trả lời của @bdukes ở đây là lệnh sử dụng https và nó sẽ hoạt động, ví dụ về Windows: "PS C: \ xampp \ htdocs> git clone github.com/acheolia/instant-search-demo.git "
Dung

Câu trả lời:


662

GitHub không thể xác thực bạn. Vì vậy, hoặc bạn không thiết lập bằng khóa SSH, vì bạn chưa thiết lập một khóa trên máy của mình hoặc khóa của bạn không được liên kết với tài khoản GitHub của bạn.

Bạn cũng có thể sử dụng URL HTTPS thay vì URL SSH / git để tránh phải xử lý các khóa SSH. Đây là phương pháp được đề xuất của GitHub .

Hơn nữa, GitHub có một trang trợ giúp dành riêng cho thông báo lỗi đó và giải thích chi tiết hơn mọi thứ bạn có thể kiểm tra.


53
Lỗi này không dành riêng cho GitHub. Tôi đang gặp lỗi tương tự với BitBucket và tôi đang gãi đầu về cách giải quyết nó ...
IgorGanapolsky

32
Phần trợ giúp đang sử dụng ssh -vT git@github.comtừ trang trợ giúp Github để giúp gỡ lỗi khóa mà repo của bạn đang sử dụng. Tôi đề nghị bạn thêm nó trong câu trả lời của bạn.
MaximeBernard

25
Upvote của việc sử dụng HTTPS thay vì SSL là một chút thất vọng. SSH thuận tiện hơn nhiều. Gợi ý từ @MaximeBernard ở trên đã giải quyết vấn đề cho tôi: GIT đã không tìm đúng nơi cho thư mục .ssh. Việc sử dụng ssh -vT git@github.comcung cấp rất nhiều thông tin về lý do tại sao nó không hoạt động.
Christophe

1
theo nhận xét của tôi ở trên, một tùy chọn thứ ba là lệnh đang được gửi từ một tài khoản không phải là tài khoản có khóa ssh (ví dụ: chạy bằng root).
David LeBauer

1
Như @ theapache64 đã đề cập: Nếu bạn đang sử dụng máy Mac và đã tạo khóa ssh "ssh-add" thực sự có thể là thứ bạn đang thiếu. Đã làm cho tôi.
Vô thường kỹ thuật số

78

Bạn đã tạo một tệp cấu hình trong thư mục ~ / .ssh của mình chưa? Nó nên có nội dung như thế này:

Host github.com 
 IdentityFile ~/.ssh/github_rsa

Giả sử rằng bạn đã tạo khóa ssh có tên github_rsa

và tải nó lên GitHub ...

LƯU Ý: Bạn phải tuân theo cách cấu hình rõ ràng này nếu bạn có nhiều hơn 1 khóa (2 trở lên) trong thư mục ~ / .ssh / của bạn. Nếu bạn không chỉ định khóa theo cách này, thì khóa đầu tiên được lấy và sử dụng để xác thực github, vì vậy nó phụ thuộc vào tên tệp khóa.


1
Tôi đã tạo ra ssh-key và có thể hoạt động tốt, trong một thời gian khá lâu, không có vấn đề gì. Một ngày đẹp trời (có lẽ sau khi khởi động lại), nó đã ngừng hoạt động, trong khi khóa vẫn còn nguyên tại github và trên hệ thống cục bộ của tôi. Tôi đã thêm "tập tin cấu hình", chỉ định khóa được ánh xạ tới miền. Chi tiết được cung cấp ở trên trong igor-ganapolsky-answer. Nó hoạt động tốt !
ký sinh

3
Điều này thực sự giải quyết vấn đề của tôi! Cảm ơn nhiều! Nhưng tôi có một câu hỏi. Trước khi sử dụng phương pháp của bạn, ssh -T git@github.comtrả lời chính xác, trong khi git push -u origin masterđưa ra lỗi tương tự như trong câu hỏi. Tại sao tôi có thể kết nối với nó một cách chính xác nhưng không thể đẩy nó hoặc tìm nạp từ nó?
Eden Harder

@EdenHarder Tôi đang đối mặt với cùng một vấn đề. Bạn đã tìm thấy một câu trả lời cho nó?
Vreddhi Bhat

64

Tôi biết về vấn đề này. Sau khi thêm khóa ssh, hãy thêm khóa ssh của bạn vào tác nhân ssh (từ tài liệu chính thức )

ssh-agent -s
ssh-add ~/.ssh/id_rsa

Sau khi tất cả hoạt động tốt, git có thể xem khóa thích hợp, trước khi không thể.


5
Tỉnh trưởng! Đã hoạt động trên MacOS X của tôi
stillatmylinux

9
Không thể mở kết nối đến đại lý xác thực của bạn.
Mona Jalal

hãy thử chạy cái này: evalssh-agent -s
Vincent acent

@MonaJalal sử dụngssh-add ~/.ssh/github_rsa
Anirban Nag 'tintinmj'

Hoàn hảo. nó đang làm việc. Cảm ơn bạn. 👌
Erkam KUCET

62

Bạn cần tạo khóa SSH (nếu bạn không có khóa) và liên kết khóa chung với tài khoản Github của bạn. Xem tài liệu riêng của Github .


2
Cảm ơn vì điều này ... Tôi đã nhận được một khóa SSH được tạo từ GitHub. Lệnh nào được sử dụng để liên kết hai trong thiết bị đầu cuối bây giờ? Cảm ơn!
webwrks

2
Không có lệnh đầu cuối cho điều đó. Xem bước 4 trong tài liệu mà tôi đã liên kết trong câu trả lời của mình.
cdhowie

Tôi đã nhân bản kho lưu trữ bằng cách sử dụng HTTPS. Tôi có cần tạo khóa SSH trong trường hợp này không?
Pabitra Dash

@PabitraDash Số HTTPS không sử dụng khóa SSH.
cdhowie

51

Điều này đã xảy ra với tôi. Vì một số lý do, nguồn gốc của tôi đã bị rối tung mà tôi không nhận ra:

Kiểm tra xem cài đặt của bạn có đúng không

git remote -v

url cần phải là một cái gì đó như ssh: //git@github.com/YourDirectory/YourProject.git; nếu bạn không thấy git@github.com, hãy sử dụng

git remote set-url origin git://github.com/YourDirectory/YourProject.git

để đặt nó đúng. Hoặc bạn có thể sử dụng ứng dụng github để kiểm tra và đặt url Kho lưu trữ từ xa chính trong bảng cài đặt của kho lưu trữ cụ thể của bạn.


9
Hãy cẩn thận với các url. Chúng khác nhau giữa https và ssh và các bài đăng trên trang này không làm cho nó rõ ràng. Mỗi dự án git có tệp .git / config trong thư mục gốc của dự án. Ở đó bạn có thể đặt thông tin từ xa và chi nhánh. Đặt điều khiển từ xa cho https: url = github.com/<yourGitUserName>/<yourGitProject>.git Trong khi đối với git + ssh: url = git@github.com: <yourGitUserName> / <yourGitProject> .git Có url sai quyền công khai bị từ chối lỗi có lẽ không phải là một lỗi rất rõ ràng.
darKoram

đối với trường hợp của tôi trong trận chung kết chỉ hoạt động với một phần: git remote set-url origin github.com/your_directory/your_project.git
rld

19

Giả sử bạn đang kết nối GitHub qua SSH, bạn có thể chạy lệnh bên dưới để xác nhận điều này.

$git config --get remote.origin.url

Nếu bạn nhận được một kết quả có định dạng sau git@github.com: xxx / xxx.github.com.git, thì bạn nên làm như sau.

Tạo khóa SSH (hoặc sử dụng khóa hiện có). nếu bạn đã có, bạn chỉ cần thêm khóa của mình vào ssh-agent (bước 2) và vào tài khoản GitHub của bạn (bước 3).

bên dưới dành cho những người không có khóa SSH.

Bước 1 Tạo cặp khóa rsa công khai / riêng tư.

$ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Bạn sẽ được yêu cầu xác nhận nơi lưu khóa SSH và cụm mật khẩu bạn muốn sử dụng.

Bước 2 Thêm khóa của bạn vào ssh-agent

  • Đảm bảo ssh-agent được bật

    $eval "$(ssh-agent -s)"

  • Thêm khóa SSH của bạn vào ssh-agent:

    $ssh-add ~/.ssh/id_rsa

Bước 3 Thêm khóa SSH vào tài khoản của bạn

$sudo apt-get install xclip

$xclip -sel clip < ~/.ssh/id_rsa.pub

Sau đó thêm khóa đã sao chép vào GitHub

Chuyển đến Cài đặt -> Phím SSH (Thanh bên cài đặt cá nhân) -> Thêm khóa SSH -> điền vào biểu mẫu (khóa nằm trong bảng tạm của bạn, chỉ cần sử dụng ctrl + v) -> Thêm khóa

Sau khi trải qua các bước trên, bạn nên giải quyết vấn đề cấp phép.

Liên kết tham khảo: Tạo khóa SSH .


Giải pháp này hoạt động trên Ubuntu, $ ssh-add /root/.ssh/id_rsa
Feras

Điều này cũng giải quyết một cat ~/.ssh/id_rsa.pub
mớ hỗn độn

19

Trước tiên, chúng tôi cần kiểm tra các phím ssh hiện có trên máy tính của bạn. Mở Terminal và chạy:

ls -al ~/.ssh

#or

cd ~/.ssh
ls

và điều đó sẽ liệt kê các tệp trong thư mục .ssh của bạn

Và cuối cùng tùy thuộc vào những gì bạn thấy (trong trường hợp của tôi là):

 github_rsa  github_rsa.pub known_hosts

Chỉ cần thử thiết lập RSA của bạn và hy vọng điều đó sẽ giải quyết được các vấn đề "git đẩy gốc" của bạn

$ ssh-keygen -lf ~/.ssh/github_rsa.pub

LƯU Ý: Chứng chỉ RSA được ghép nối khóa để bạn có chứng chỉ riêng và chứng chỉ chung, không thể truy cập riêng vì bạn thuộc về github (trong trường hợp này) nhưng công khai là lỗi bạn có thể bị thiếu khi xảy ra lỗi này (ít nhất đó là trường hợp của tôi, tài khoản github hoặc repo của tôi đã bị rối bằng cách nào đó và tôi đã phải "liên kết" khóa công khai, được tạo trước đó)


Tôi có phải sao chép SHAđầu ra vào github từ lệnh này không?
IgorGanapolsky

Không, chỉ cần thực hiện "ssh-keygen -lf ~ / .ssh / <Your_GITHUB_RSA_FILE.pub>"
d1jhoni1b

đó là lý do tại sao tôi cũng đính kèm một lệnh "Liệt kê các tệp trong thư mục .ssh của bạn" ... để bạn biết tệp trích xuất khóa nào (ssh-keygen). Hãy nhớ các chứng chỉ RSA được ghép nối các khóa để bạn có chứng chỉ riêng và chứng chỉ chung, riêng tư sẽ không thể truy cập được vì nó thuộc về github (trong trường hợp này) nhưng công khai là lỗi bạn có thể bị thiếu khi xảy ra lỗi này ( ít nhất đó là trường hợp của tôi, tài khoản github hoặc repo của tôi đã bị rối bằng cách nào đó và tôi đã phải "liên kết" khóa công khai, được tạo trước đó, một lần nữa)
d1jhoni1b

$ ssh-keygen -lf ~ / .ssh / github_rsa.pub /home/mona/.ssh/github_rsa.pub: Không có tệp hoặc thư mục như vậy
Mona Jalal

"Không có tệp hoặc thư mục như vậy" có nghĩa là bạn không có tên tệp hoặc đường dẫn đó ... bạn sẽ nhận được gì khi thực hiện ls -al ~ / .ssh?
d1jhoni1b

14

Tôi đã nhận được lỗi này. Hóa ra tôi vừa nâng cấp OSX lên Sierra và khóa cũ của tôi không còn được đăng ký.

Lúc đầu tôi nghĩ nó là "Nâng cấp lên macOS Sierra sẽ phá vỡ các khóa SSH của bạn và khóa bạn khỏi máy chủ của chính bạn"

Nhưng tôi đã vượt qua nó. Hóa ra tôi vừa phải đăng ký lại khóa hiện tại của mình:

ssh-add -K

Và gõ cụm mật khẩu ... xong!


2
cùng một vấn đề, đã làm việc cho tôi: `ssh-add -K ~ / .ssh /
id_rsa`

11

Giải pháp khác :

tạo các khóa SSH, gõ ssh-keygen -t rsa -C "your_email@example.com" . Điều này sẽ tạo cả tệp id_rsa và id_rsa.pub.

Thêm id_rsa vào danh sách ssh trên máy tính cục bộ: ssh-add ~/.ssh/id_rsa.

Sau khi tạo khóa, lấy pubkey bằng cách sử dụng:

cat ~/.ssh/id_rsa.pub 

bạn sẽ nhận được một cái gì đó như:

cat ~/.ssh/id_rsa.pub 

ssh-rsa AAAB3NzaC1yc2EAAAADAQABAAACAQCvMzmFEUPvaA1AFEBH6zGIF3N6pVE2SJv9V1MHgEwk4C7xovdk7Lr4LDoqEcqxgeJftwWQWWVrWWf7q9qCdHTAanH2Q5vx5nZjLB+B7saksehVOPWDR/MOSpVcr5bwIjf8dc8u5S8h24uBlguGkX+4lFJ+zwhiuwJlhykMvs5py1gD2hy+hvOs1Y17JPWhVVesGV3tlmtbfVolEiv9KShgkk3Hq56fyl+QmPzX1jya4TIC3k55FTzwRWBd+IpblbrGlrIBS6hvpHQpgUs47nSHLEHTn0Xmn6Q== user@email.com

sao chép khóa này (giá trị) và truy cập github.com và trong cài đặt (khóa ssh và pgp) thêm khóa công khai của bạn.


10

Trong trường hợp bạn không truy cập vào kho lưu trữ của riêng mình hoặc nhân bản bên trong kho lưu trữ nhân bản (sử dụng một số lệnh "git subodule ..."):

Trong thư mục chính của kho lưu trữ của bạn:

$ ls -a

1. Mở ".gitmodules" và bạn sẽ tìm thấy một cái gì đó như thế này:

[submodule "XXX"]
    path = XXX
    url = git@github.com:YYY/XXX.git

Thay đổi dòng cuối cùng thành HTTPS của kho lưu trữ bạn cần kéo:

[submodule "XXX"]
    path = XXX
    https://github.com/YYY/XXX.git

Lưu ".gitmodules"chạy lệnh cho các mô hình con và ".git" sẽ được cập nhật.

2. Mở ".git", đi đến tệp "config" và bạn sẽ tìm thấy một cái gì đó như thế này:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = https://github.com/YYY/XXX.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[submodule "XXX"]
    url = git@github.com:YYY/XXX.git

Thay đổi dòng cuối cùng thành HTTPS của kho lưu trữ bạn cần kéo:

    url = https://github.com/YYY/XXX.git

Vì vậy, trong trường hợp này, vấn đề chính chỉ đơn giản là url. HTTPS của bất kỳ kho lưu trữ nào có thể được tìm thấy ngay trên đầu trang của kho lưu trữ.


9

điều này làm việc cho tôi:

1- loại bỏ mọi nguồn gốc

git remote rm origin  

(xem https://www.kernel.org/pub/software/scm/git/docs/git-remote.html )

* từ xa: "Quản lý tập hợp các kho lưu trữ (" điều khiển từ xa ") có chi nhánh bạn theo dõi.

* rm: "Xóa điều khiển từ xa có tên. Tất cả các nhánh và cài đặt cấu hình theo dõi từ xa cho điều khiển từ xa đều bị xóa."

2- kiểm tra tất cả đã được gỡ bỏ:

git remote -v  

3- thêm chủ gốc mới

git remote add origin git@github.com:YOUR-GIT/YOUR-REPO.git

đó là tất cả mọi người!


1
Điều đó rất hữu ích. Vì những lệnh này nó bắt đầu hỏi tôi tên người dùng và mật khẩu tài khoản github, sau đó tôi có thể dễ dàng đẩy đến liên kết github theo loại trong terminal: git push -u origin master
Noha Salah

8

Đảm bảo ssh-add -lhiển thị dấu vân tay của khóa SSH có trong danh sách các khóa SSH trong tài khoản Github của bạn.

Nếu đầu ra trống, nhưng bạn biết bạn có khóa SSH riêng hoạt động với tài khoản github của bạn, hãy chạy ssh-addtrên khóa này (được tìm thấy trong ~/.ssh. Nó được đặt tên id_rsatheo mặc định, vì vậy bạn có thể sẽ chạy ssh-add id_rsa).

Khác, làm theo các hướng dẫn sau để tạo cặp khóa SSH.


8

Tôi đã sử dụng github trước đó cho một trong các dự án php của tôi. Trong khi sử dụng github, tôi đã sử dụng ssh thay vì https. Tôi đã cài đặt máy như vậy và mỗi lần tôi sử dụng để cam kết và đẩy mã, nó sẽ hỏi tôi mật khẩu khóa rsa của tôi.

Sau một vài ngày, tôi đã ngừng làm việc với dự án php và quên mật khẩu rsa của mình. Gần đây, tôi bắt đầu làm việc với một dự án java và chuyển sang bitbucket. Vì tôi đã quên mật khẩu và không có cách nào để khôi phục nó, tôi đoán, tôi quyết định sử dụng giao thức https (được khuyến nghị) cho dự án mới và gặp lỗi tương tự trong câu hỏi.

Làm thế nào tôi giải quyết nó?

  1. Chạy lệnh này để bảo git của tôi sử dụng https thay vì ssh:

    git config --global url."https://".insteadOf git://
    
  2. Hủy bỏ bất kỳ điều khiển từ xa nếu có

    git remote rm origin
    
  3. Làm lại mọi thứ từ git init đến git đẩy và nó hoạt động!

PS: Tôi cũng chưa cài đặt ssh từ máy của mình trong quá trình gỡ lỗi nghĩ rằng, gỡ bỏ nó sẽ khắc phục vấn đề. Vâng tôi biết!! :)


Tôi không nghĩ rằng nên hướng mọi người tới https, khi đó ssh được cho là hoạt động. Hơn nữa, điều này không có khả năng làm việc cho những người đứng sau một proxy công ty.
Igor Stoppa

8

Vấn đề được giải quyết nếu bạn thay đổi quyền truy cập ssh thành quyền truy cập https vào kho lưu trữ từ xa:

git remote set-url origin https_link_to_repository

git push -u origin master

5

Tôi nghĩ rằng tôi có câu trả lời tốt nhất cho bạn, các ứng dụng git của bạn đọc id_rsa.pub của bạn trong thư mục người dùng root

/home/root/.ssh/id_rsa.pub

Đó là lý do tại sao khóa của bạn trong /home/your_username/.ssh/id_rsa.pub không thể được đọc bởi git. Vì vậy, bạn cần tạo khóa trong /home/root/.ssh/

$ sudo su
$ ssh-keygen
$ cd ~/.ssh
$ cat id_rsa.pub

Sau đó sao chép khóa trong tài khoản github của bạn. Nó làm việc cho tôi. Bạn có thể thử nó.


Điều này cho tôi câu trả lời tôi đang tìm kiếm. Tôi đã chạy clone với sudo từ thói quen, vì vậy nó đang tìm kiếm thông tin sai. Đã tắt sudo và bản sao của tôi chạy tốt.
Taekahn

4

Nếu bạn đã tạo khóa SSH và vẫn gặp lỗi thì đó là do bạn cần cấp cho người dùng quyền đọc và ghi vào thư mục mà bạn đang sao chép vào. Để làm điều này , sudo chmod 777 <your_folder_name_here>". Tất nhiên, đây là sau khi bạn đã tạo khóa SSH và bạn vẫn gặp lỗi này. Hy vọng điều này sẽ giúp người dùng trong tương lai.

Biên tập

Để thêm vào điều này, hãy sử dụng quản trị viên trong Windows nếu bạn đang sử dụng git bash


Điều này. Điều này cũng có thể gây ra vấn đề.
KevinO

1
Đây là vấn đề của tôi, nhưng tôi không khuyên bạn nên đặt quyền 777 trên một thư mục. Trong trường hợp của tôi, thư mục được sở hữu bởi người dùng root và tôi cần cấp cho nó quyền truy cập vào tài khoản người dùng không phải root của tôi. Tôi đã làm như thế này:sudo chown -R $USER:$USER <your_folder_name_here>
David

@David, tôi cũng khuyên bạn như vậy. 777 khá hack và không an toàn.
Kevin

3

Tôi đã có cùng một vấn đề gần đây. Điều này có thể hữu ích nếu bạn cần sửa chữa ngay lập tức, nhưng điều này cần được thực hiện mỗi khi bạn khởi động lại hệ thống của mình

Từ thiết bị đầu cuối, chạy: ssh-add ~/.ssh/id_rsa

Nhập mật khẩu hệ thống của bạn và nó sẽ hoạt động.


3

Tôi muốn thêm một số phát hiện của tôi:

Nếu bạn đang sử dụng GitBash, hãy đảm bảo khóa SSH được lưu trữ trong~/.ssh/id_rsa .

Theo mặc định, GitBashtìm kiếm ~/.ssh/id_rsalàm đường dẫn mặc định cho khóa SSH.

Ngay cả tên tập tin id_rsaquan trọng. Nếu bạn lưu khóa SSH của mình trong một tên tệp hoặc đường dẫn khác, nó sẽ Permission Denied(publickey)báo lỗi.


3

OK có một vài giải pháp cho vấn đề này, một số trong số chúng có thể đã được đề cập nhưng chỉ để giữ chúng cùng nhau:

  • đảm bảo rằng các khóa của bạn có mặt, theo mặc định là một thư mục ~ / .ssh /, tức là id.rsa và id.rsa.pub

  • đảm bảo các khóa có quyền chính xác, bạn có thể chạy chmod:

    chmod 600 ~ / .ssh / id_rsa

    chmod 644 ~ / .ssh / id_rsa.pub

  • đảm bảo nội dung của khóa công khai của bạn (id_rsa.pub) khớp với nội dung được tải lên trong cấu hình kho lưu trữ từ xa

  • Cuối cùng khắc phục sự cố với tác nhân ssh : ssh-add

Một số thông tin khác: https://itcodehub.blogspot.com/2015/01/ssh-add-probols-with-ssh-agent-and.html


Tôi đã sao chép khóa ssh của mình từ máy tính này sang máy tính khác bằng ổ USB được định dạng là FAT32. Điều đó đã thay đổi quyền của các tập tin. Trên Ubuntu, tôi thường tự động được hỏi mật khẩu SSH khi cần, nhưng điều đó chỉ âm thầm không xảy ra cho đến khi tôi chạy chmodnhư bạn mô tả. Cảm ơn.
lydell

1

Nếu bạn đang sử dụng GitHub cho Mac UI, hãy kiểm tra tùy chọn để đảm bảo bạn đã đăng nhập.


1

Tôi đã nhận được cùng một lỗi trong 'git đẩy'. Ở phía khách hàng tôi có hai nguồn gốc và chủ. Tôi loại bỏ một, sau đó nó hoạt động tốt.


1

bạn có thể sử dụng url Https để đăng nhập

Tôi đoán bạn đang cố đăng nhập bằng ssh url khi bạn nói git đẩy nếu nó chỉ hỏi mật khẩu xem xét bạn đang kết nối thông qua ssh.better bạn sử dụng url url.


1

Ngoài ra, trong Ubuntu, mặc dù đã có khóa SSH được nhập trong cài đặt trong BitBucket, tôi đã gặp vấn đề này. Lý do là, tôi đã thử như sau:

sudo git push origin master

Không chắc chắn tại sao, nhưng nó đã được giải quyết bằng cách sử dụng

git push origin master

Không sử dụng sudo.


1

Đối với tôi, tôi đã thử điều này -

eval "$(ssh-agent -s)"

sau đó tôi chạy

ssh-add ~/.ssh/path-to-the-keyfile

và để tạo khóa bạn có thể chạy

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

điều này sẽ tạo ra cặp khóa (Công khai và riêng tư).

bạn có thể lưu trữ khóa này vào github để đọc thêm Điều này Thêm khóa SSH mới vào tài khoản GitHub của bạn

Tôi hy vọng nó sẽ giúp người khác :)


1

Tôi đã có một vấn đề tương tự như @Batman. Tuy nhiên, vì tôi đã chạy cái này dưới / usr / local / src / projectname, chạy mà không có sudo không phải là một lựa chọn.

Chỉ cần thêm cờ -E để xem trước môi trường (~ / .ssh / path) của bạn.

$ sudo -E git clone git@your_repo

Từ người đàn ông sudo:

-E, --preserve-env Chỉ ra chính sách bảo mật mà người dùng muốn phục vụ trước các biến môi trường hiện có của họ. Chính sách bảo mật có thể trả về lỗi nếu người dùng không có quyền để bảo vệ môi trường.


1

Một khi kịch bản xảy ra điều này là khi bạn làm theo hướng dẫn của GitHub sau khi bạn tạo kho lưu trữ của mình. Git sẽ hướng dẫn bạn thêm điều khiển từ xa bằng thứ gì đó như thế này.

git remote add origin git@github.com:<user>/<project>.git

Thay thế những gì trong <> bằng các giá trị liên quan đến tài khoản của bạn.

Giải pháp là loại bỏ .githậu tố. Thêm điều khiển từ xa như sau:

git remote add origin git@github.com:<user>/<project>


1

tl; dr

trong ~/.ssh/configđặt

PubkeyAcceptedKeyTypes=+ssh-dss

Kịch bản Nếu bạn đang sử dụng phiên bản openSSH> 7, như nói trên MacBook Pro trên thanh cảm ứng thì đó làssh -V
OpenSSH_7.4p1, LibreSSL 2.5.0

Bạn cũng đã có một máy Mac cũ hơn ban đầu có khóa bạn đặt trên Github, có thể đó là sử dụng khóa id_dsa. Theo mặc định, OpenSSH v7 không sử dụng các khóa DSA này (bao gồm cả khóa này ssh-dss), nhưng bạn vẫn có thể thêm lại bằng cách đặt mã sau vào~/.ssh/config

PubkeyAcceptedKeyTypes=+ssh-dss

Nguồn làm việc cho tôi là bản tin Gentoo này

Bây giờ bạn ít nhất có thể sử dụng GitHub và sau đó sửa các khóa của bạn thành RSA.


1

Tôi tìm thấy trang này trong khi tìm kiếm giải pháp cho thông báo lỗi tương tự bằng cách sử dụng git pullmáy chủ từ xa:

$ git pull
Permission denied (publickey).
fatal: Could not read from remote repository.

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

Tôi đã được kết nối từ máy cục bộ của tôi với máy chủ từ xa thông qua ssh -AY remote_hostname. Đây không phải là một giải pháp cho câu hỏi của OP, nhưng hữu ích cho những người khác đi qua trang này, vì vậy hãy đăng nó ở đây.

Lưu ý rằng trong trường hợp của tôi, git pullhoạt động tốt trên máy cục bộ của tôi (nghĩa là khóa ssh đã được thiết lập và được thêm vào tài khoản GitHub, v.v.). Tôi đã giải quyết vấn đề của mình bằng cách thêm nó ~/.ssh/configvào máy tính xách tay của mình:

Host *
     ForwardAgent yes

Sau đó tôi đã kết nối lại với máy chủ từ xa ssh -AY remote_hostnamegit pullhiện đã hoạt động. Sự thay đổi trong cấu hình cho phép chuyển tiếp khóa ssh của tôi từ máy cục bộ của tôi đến bất kỳ máy chủ nào. Các -Atùy chọn để sshthực sự chuyển tiếp nó ở chỗ phiên ssh. Xem thêm chi tiết tại đây.


0

Có thể ssh-agent của bạn không kích hoạt Bạn có thể thử nó

  1. Tải git

http://git-scm.com/

  1. Cài đặt nó

  2. Kích hoạt ssh-agent

C: \ Tệp chương trình \ Git \ cmd

bắt đầu-ssh-đại lý


0

Chuyển đến bảng điều khiển tài khoản GitHub của bạn, tìm kho lưu trữ dự án của bạn, nhấp vào tab Cài đặt - bên dưới Khóa triển khai, bạn sẽ phải thêm khóa SSH. Mở Terminal và gõ:

cat ~/.ssh/id_rsa.pub | pbcopy 

Điều này sẽ sao chép khóa từ tệp id_rsa.pub của bạn. Vì vậy, chỉ cần quay lại bảng điều khiển GitHub, dán nó, nhấp vào Thêm khóa và đó là nó.

Giải pháp tương tự áp dụng cho tài khoản Bitbucket.

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.