2014-10-22 33 views
64

Đây là lần đầu tiên tôi truy cập github và tôi không có kinh nghiệm khi sử dụng bảng điều khiển. Tôi đang sử dụng Macbook (sử dụng Bash). Khi tôi cố gắng truy cập vào github, tôi có được điều này:Quyền Github bị từ chối: ssh add agent không có danh tính

git clone [email protected]:dhulihan/league-of-legends-data-scraper.git 
Cloning into 'league-of-legends-data-scraper'... 
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 đã thử làm theo các hướng dẫn trên trang Github về Permission denied Khi tôi sử dụng ssh -vT [email protected], tôi nhận được như sau:

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011 
debug1: Reading configuration data /etc/ssh_config 
debug1: /etc/ssh_config line 20: Applying options for * 
debug1: Connecting to github.com [192.30.252.129] port 22. 
debug1: Connection established. 
debug1: identity file /Users/XXXX/.ssh/id_rsa type -1 
debug1: identity file /Users/XXXX/.ssh/id_rsa-cert type -1 
debug1: identity file /Users/XXXX/.ssh/id_dsa type -1 
debug1: identity file /Users/XXXX/.ssh/id_dsa-cert type -1 
debug1: Enabling compatibility mode for protocol 2.0 
debug1: Local version string SSH-2.0-OpenSSH_6.2 
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0 
debug1: no match: libssh-0.6.0 
debug1: SSH2_MSG_KEXINIT sent 
debug1: SSH2_MSG_KEXINIT received 
debug1: kex: server->client aes128-ctr hmac-sha1 none 
debug1: kex: client->server aes128-ctr hmac-sha1 none 
debug1: sending SSH2_MSG_KEXDH_INIT 
debug1: expecting SSH2_MSG_KEXDH_REPLY 
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48 
debug1: Host 'github.com' is known and matches the RSA host key. 
debug1: Found key in /Users/XXXX/.ssh/known_hosts:1 
debug1: ssh_rsa_verify: signature correct 
debug1: SSH2_MSG_NEWKEYS sent 
debug1: expecting SSH2_MSG_NEWKEYS 
debug1: SSH2_MSG_NEWKEYS received 
debug1: Roaming not allowed by server 
debug1: SSH2_MSG_SERVICE_REQUEST sent 
debug1: SSH2_MSG_SERVICE_ACCEPT received 
debug1: Authentications that can continue: publickey 
debug1: Next authentication method: publickey 
debug1: Trying private key: /Users/XXXX/.ssh/id_rsa 
debug1: Trying private key: /Users/XXXX/.ssh/id_dsa 
debug1: No more authentication methods to try. 
Permission denied (publickey). 

Tiếp theo, eval "$ (ssh-agent -s)" trả về "Đại lý pid 2314" Tuy nhiên, ssh-add -l trả về "Tác nhân không có danh tính."

Và đó là nơi tôi bị kẹt. Tôi đã thử googling vấn đề này và tìm kiếm ở đây trên SO. Tôi đã thử truy cập các tập tin trong thư mục ssh, nhưng không có. Chỉ một thư mục có tên Knownusers.

Ai đó có thể giúp tôi giải quyết vấn đề này không?

+0

Bạn * có * một khóa SSH được tạo ra? Bạn có nó được liệt kê với tài khoản github của bạn? Bạn có chìa khóa trên mac của bạn? –

+0

Tôi đang tìm câu trả lời cho câu hỏi đó (không quen thuộc với toàn bộ hệ thống này), và thấy điều này: https://mac.github.com/ Nó đã giải quyết mọi vấn đề của tôi. Tôi khuyên bạn nên nó. Cảm ơn bạn đã đẩy đúng hướng, Etan! – Dark

+4

Bạn có thể muốn thêm câu trả lời cho câu hỏi này (với các chi tiết khác về cách giải quyết vấn đề của bạn) và chấp nhận câu trả lời của bạn. –

Trả lời

92

Chi tiết đầy đủ trong số answer này.

Nói tóm lại, khi ssh-add -l lợi nhuận The agent has no identities nó có nghĩa là các phím được sử dụng bởi ssh (được lưu trữ trong các tập tin như ~/.ssh/id_rsa, ~/.ssh/id_dsa, vv) hoặc là mất tích, họ không biết đến tác nhân xác thực (ssh-agent) hoặc quyền của họ được đặt không chính xác (ví dụ: thế giới có thể ghi).

Nếu phím của bạn bị thiếu (tức là bạn chưa tạo khóa), hãy sử dụng 'ssh-keygen' (ví dụ: ssh-keygen -t rsa) để tạo chúng, sau đó sử dụng ssh-add để thêm chúng.

Nếu phím tồn tại nhưng không được biết đến ssh-agent (ví dụ, họ có thể nằm trong một thư mục phi tiêu chuẩn) sử dụng 'ssh-add' (ví dụ, ssh-add /path/to/my-ssh-folder/id_rsa) để thêm chúng.

Xem này answer nếu bạn gặp sự cố với ssh-add hoặc ssh-agent.

+2

Cảm ơn bạn @Doedoe cho một liên kết đến một câu trả lời tốt đẹp và ngắn. Và đối với những người có keyS (nghĩa là nhiều tài khoản Git), bạn có thể phải sử dụng 'ssh-add/path/to/keyX' cho mỗi, đặc biệt nếu chúng có tên không chuẩn. Chi tiết tại đây: https://stackoverflow.com/questions/3225862/multiple-github-accounts-ssh-config/17158985#17158985 (câu trả lời hay) – tuk0z

+0

Cảm ơn vì điều này. Tôi bị kẹt ở đây .. nhưng tôi nhận ra rằng tôi cần chạy 'ssh-add' * lần nữa * sau khi giải quyết phần quyền hạn của vấn đề. Sau đó, 'ssh -vT git @ github.com' không hoạt động. Tôi đã cần thêm đường dẫn * tuyệt đối * như bình luận ở trên được đề cập. Sau đó, nó là tất cả nước thịt. – jungledev

+0

Trong trường hợp thứ hai, tôi quên cụm mật khẩu của mình và tôi đã khôi phục nó bằng cách sử dụng https://help.github.com/articles/how-do-i-recover-my-ssh-key-passphrase/ – Malder

57

thử điều này:

ssh-add ~/.ssh/id_rsa 

làm việc cho tôi

+3

Xin chào, chào mừng bạn đến với SO. Vui lòng giải thích mã của bạn để người dùng đồng nghiệp của bạn có thể hiểu những gì đang diễn ra. Chúc mừng. – Cthulhu

+3

Khi bạn khởi động lại các phím của bạn đã biến mất và bạn phải 'ssh-thêm' chúng một lần nữa. – Louwki

+0

@Louwki Yeah ... đó là siêu gây phiền nhiễu.Bạn có biết cách nào đó không? –

10

Tôi đã được stucked một lúc trên cùng một vấn đề, mà tôi cuối cùng đã được giải quyết.

Vấn đề của tôi: Tôi không thể thực hiện bất kỳ thao tác nào. Tôi có thể kiểm tra & xem điều khiển từ xa của tôi (sử dụng git remote -v), nhưng khi tôi thực hiện git push origin master, nó trả lại: Permission denied (publickey). fatal: Could not read from remote repository. và như vậy.

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

  • tôi tạo ra một chìa khóa sử dụng ssh-keygen -t rsa. Nhập tên cho tệp khóa (khi được hỏi) là vô dụng.
  • Sau đó tôi có thể thêm khóa (để git): ssh-add /Users/federico/.ssh/id_rsa, mà trở thành công Identity added: /Users/myname/.ssh/id_rsa (/Users/myname/.ssh/id_rsa)
  • tôi thêm chìa khóa SSH để GitHubusing this help page.
  • Đã thử tất cả các lệnh trong trang trợ giúp 'Góp quyền công khai' của Github, chỉ lệnh ssh-add -l hoạt động/có vẻ hữu ích (sau khi đã chạy các bước trước đó), nó đã trả về thành công khóa của tôi. The last step cho bạn biết nơi để kiểm tra khóa công khai của bạn trên trang GitHub của bạn. Và lệnh này sẽ giúp bạn kiểm tra tất cả các phím của bạn: ls -al ~/.ssh.

Sau đó, lệnh đẩy cuối cùng đã hoạt động!

Tôi hy vọng điều này sẽ hữu ích! Chúc may mắn cho tất cả mọi người.

13

THE 2017 ĐÁP cho MacOS Sierra & High Sierra:

PS: hầu hết các câu trả lời khác sẽ giúp bạn tạo một khóa ssh mới ... nhưng bạn không cần phải làm điều đó:)

Như đã mô tả một cách chi tiết về https://openradar.appspot.com/27348363, hệ điều hành MacOS/OS X đến Yosemite sử dụng để nhớ khóa SSH bổ sung bởi lệnh ssh-add -K <key>

Vì vậy, đây là 4 bước tôi đã phải đi qua để cho nó hoạt động:

1:ssh-add ~/.ssh/PATH_TO_YOUR_SSH_PRIVATE_KEY (e.g. ~/.ssh/id_rsa)

2: Thêm dòng sau trong ~/.ssh/config

Host * 
    AddKeysToAgent yes 
    UseKeychain yes 
    IdentityFile PATH_TO_YOUR_SSH_PRIVATE_KEY (e.g. ~/.ssh/id_rsa) 

3 : đảm bảo xóa mọi mục nhập gitconfig sử dụng trình trợ giúp osxkeychain:

https://github.com/gregory/dotfiles/commit/e38000527fb1a82b577f2dcf685aeefd3b78a609#diff-6cb0f77b38346e0fed47293bdc6430c6L48 

4: khởi động lại thiết bị đầu cuối của bạn để nó có hiệu lực.

+1

Câu trả lời hay, tôi sẽ đề cập đến điều này! Rõ ràng, [OS X 10.12.2 và sau đó không tự động tải các định danh vào ssh-agent] (https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it- to-the-ssh-agent/# add-your-ssh-key-to-the-ssh-agent) (mà cá nhân tôi nghĩ là một quyết định sử dụng thực sự ngu ngốc, nhưng tôi hiểu ý nghĩa bảo mật). Vì vậy, bạn cần phải sửa đổi cấu hình SSH để tải chúng theo cách thủ công. Tôi chỉ muốn đầu ra lỗi tốt hơn sẽ dẫn đến một giải pháp, thay vì một giờ tìm kiếm trên Internet. –

2

Chạy các lệnh sau:

ssh-keygen -t rsa 
ssh-add /Users/*yourUserNameHere*/.ssh/id_rsa** 
pbcopy < ~/.ssh/id_rsa.pub** 

Tới tài khoản Github của bạn: https://github.com/settings/profile

1) Click: SSH và các phím GPG

2) New SSH Key và quá khứ nó có

3) Thêm Khóa SSH

Xong!

0

trước hết bạn cần phải đi trong thư mục ssh của bạn
cho loại lệnh trong terminal của bạn trong mac hoặc bất cứ điều gì bạn sử dụng trong cửa sổ sau

cd ~/.ssh 

bây giờ nó là trong ssh
đây bạn có thể tìm thấy tất cả các khóa/tệp ssh liên quan đến tất cả các dự án của bạn. bây giờ, gõ lệnh sau để hiển thị bạn nếu bất kỳ phím ssh sẵn

ls 

này sẽ cho bạn thấy tất cả ssh có sẵn, trong trường hợp của tôi có hai
bây giờ, bạn sẽ cần phải bắt đầu một đại lý để thêm một ssh trong đó. Đối với loại này sau lệnh

eval "$(ssh-agent -s)" 

tại cuối cùng nhưng không kém phần quan bạn sẽ thêm một ssh trong loại tác nhân này lệnh

ssh-add ~/.ssh/your-ssh 

sau thay thế

thay thế của bạn-ssh với tập tin ssh của bạn tên bạn có dạng danh sách thứ hai bước ls command

0

Điều này có thể gây ra cho bất kỳ thiết bị đầu cuối mới, id tác nhân là khác nhau. Bạn cần phải thêm chìa khóa cá nhân cho các đại lý

$ ssh-add <path to your private key> 
0

Một yếu tố bổ sung mà tôi nhận ra là thư mục thường .ssh được tạo ra trong thư mục gốc của bạn trong Mac OS X/Users /. Nếu bạn cố gắng sử dụng ssh -vT [email protected] từ một thư mục khác, nó sẽ cho bạn một lỗi ngay cả khi bạn đã thêm đúng khóa.

Bạn cần phải thêm phím một lần nữa (ssh-add 'con đường đúng để id_rsa') từ thư mục hiện hành để xác thực thành công (giả định rằng bạn đã tải lên chìa khóa để hồ sơ của bạn trong Git)

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