Câu hỏi Không thể mở kết nối với tác nhân xác thực của bạn


Tôi đang gặp lỗi này:

$ git push heroku master
Warning: Permanently added the RSA host key for IP address '50.19.85.132' to the list of known hosts.
!  Your key with fingerprint b7:fd:15:25:02:8e:5f:06:4f:1c:af:f3:f0:c3:c2:65 is not authorized to access bitstarter.

Tôi đã cố gắng thêm các phím và tôi nhận được lỗi này dưới đây:

$ ssh-add ~/.ssh/id_rsa.pub
Could not open a connection to your authentication agent.

1185
2017-07-24 23:26


gốc


Câu hỏi: một khi bạn đã đi qua mọi câu trả lời trên trang này, và không ai trong số họ làm việc. Bạn có thể làm gì tiếp theo? - Brandon Bertelsen
@BrandonBertelsen Hãy thử cái này: $ ssh-agent /bin/sh     và $ ssh-add $yourkey - shyam


Các câu trả lời:


Bạn đã bắt đầu ssh-agent?

Bạn có thể cần phải bắt đầu ssh-agent trước khi bạn chạy ssh-add chỉ huy:

eval `ssh-agent -s`
ssh-add

Lưu ý rằng điều này sẽ bắt đầu tác nhân cho msysgit Bash trên Windows. Nếu bạn đang sử dụng hệ vỏ hoặc hệ điều hành khác, bạn có thể cần phải sử dụng một biến thể của lệnh, chẳng hạn như các biến được liệt kê trong câu trả lời khác.

Xem các câu trả lời sau:

  1. ssh-add complains: Không thể mở kết nối với tác nhân xác thực của bạn
  2. Git push yêu cầu tên người dùng và mật khẩu (chứa hướng dẫn chi tiết về cách sử dụng ssh-agent)
  3. Làm thế nào để chạy (git / ssh) đại lý xác thực?.
  4. Không thể mở kết nối với tác nhân xác thực của bạn

Để tự động bắt đầu ssh-agent và cho phép một cá thể đơn lẻ làm việc trong nhiều cửa sổ bảng điều khiển, hãy xem Bắt đầu ssh-agent khi đăng nhập.

Tại sao chúng ta cần phải sử dụng eval Thay vì chỉ ssh-agent?

Để tìm hiểu lý do, hãy xem Câu trả lời của Robin Green.

Công cộng so với khóa riêng tư

Ngoài ra, bất cứ khi nào tôi sử dụng ssh-add, Tôi luôn thêm các khóa riêng cho nó. Tập tin ~/.ssh/id_rsa.pub trông giống như một khóa công khai, tôi không chắc liệu nó có hoạt động hay không. Bạn có ~/.ssh/id_rsa tập tin? Nếu bạn mở nó trong một trình soạn thảo văn bản, nó có nói đó là khóa riêng không?


1831
2017-07-25 03:37



@xtian Tôi không chắc chắn rằng tôi hiểu vấn đề. Tôi không biết chi tiết chính xác, nhưng tôi đoán rằng khóa riêng không bao giờ được gửi qua mạng. Tôi nghĩ ssh-add chỉ giải mã một khóa riêng được mã hóa trên máy chủ, để nó có thể được sử dụng cục bộ ... nó không bao giờ được gửi đến bất cứ ai. Tôi đoán rằng chỉ có các khóa công khai mới được gửi qua mạng. Hiểu biết của tôi có đúng không?
Bạn quá tốt bụng Cupcake. Bạn hoàn toàn đúng. Lỗi của tôi. ở đây; ssh-add thêm khóa riêng cho ssh-agent của người dùng (tiến trình đang chạy) có thể hoạt động thay mặt máy khách / máy chủ với máy chủ chấp nhận các khóa rsa-whatever. Geez. Tôi không biết điều gì đã khiến tôi rất phấn khích. - xtian
công trình này, nhưng tại sao? - Ali
Tôi rất tò mò eval ssh-agent -s hoạt động, nhưng ssh-agent trên chính nó thì không. - DanielM
@DanielM: SSH cần hai thứ để sử dụng ssh-agent: một cá thể ssh-agent chạy ở chế độ nền và một bộ biến môi trường cho SSH biết ổ cắm nào nên sử dụng để kết nối với tác nhân (SSH_AUTH_SOCK IIRC). Nếu bạn chỉ cần chạy ssh-agent khi đó tác nhân sẽ bắt đầu, nhưng SSH sẽ không biết tìm nó ở đâu. - Matthew Phipps


Tôi đã thử các giải pháp khác không có kết quả. Tôi đã nghiên cứu thêm và thấy rằng lệnh sau đây đã hoạt động. Tôi đang sử dụng Windows 7 và Git Bash.

eval $(ssh-agent)

Thêm thông tin trong: https://coderwall.com/p/rdi_wq


442
2018-02-20 13:34



Làm việc trên Windows 8 quá. - Andreas Rudolph
Hoạt động trên Windows 8.1, cảm ơn bạn. :) - Yenthe
nó hoạt động trên win 7, cảm ơn - Hoto
Win 7 và Git Bash ở đây ... Câu trả lời của Cupcake KHÔNG làm việc cho tôi nhưng câu trả lời này đã làm. Cảm ơn. - Ayana
này hoạt động trên windows 10 trong git bash (câu trả lời "đúng") - charneykaye


Lệnh sau đã làm việc cho tôi. Tôi đang sử dụng CentOS.

exec ssh-agent bash

220
2017-12-05 15:10



Cảm ơn, điều này làm việc cho tôi, tôi chạy 'exec ssh-agent zsh' cho shell của tôi. - jasonmcclurg
Cấu hình giải pháp này hoạt động cho Ubuntu 12.04 LTS của tôi. - Paul L
Theo "câu trả lời" đã xóa này, nó cũng hoạt động trên Amazon Linux AMI. Tôi đoán đó là một giải pháp Unix / Linux / * nix.
Tôi ssh'ed vào một container docker và ssh-add my.id_rsa sẽ thất bại với tôi. Nhưng exec ssh-agent zsh đưa ra một môi trường mà tôi có thể ssh-add không có vấn đề gì. Và tôi đang ở trong thùng chứa docker của tôi :) - markuz-gj
Làm việc cho tôi trên Windows 7. - Qing


MsysGit hoặc Cygwin

Nếu bạn đang sử dụng Msysgit hoặc Cygwin bạn có thể tìm thấy một hướng dẫn tốt tại SSH-Agent trong msysgit và cygwin và bash:

  1. Thêm tệp có tên .bashrc vào thư mục chính của bạn.

  2. Mở tệp và dán vào:

    #!/bin/bash
    eval `ssh-agent -s`
    ssh-add
    
  3. Điều này giả định rằng chìa khóa của bạn là thông thường ~/.ssh/id_rsa vị trí. Nếu không, hãy bao gồm đường dẫn đầy đủ sau ssh-add chỉ huy.

  4. Thêm hoặc tạo tệp ~/.ssh/config với nội dung

    ForwardAgent yes
    

    Trong hướng dẫn ban đầu, ForwardAgent param là Yesnhưng đó là lỗi đánh máy. Sử dụng tất cả chữ thường hoặc bạn sẽ gặp lỗi.

  5. Khởi động lại Msysgit. Nó sẽ yêu cầu bạn nhập mật khẩu của bạn một lần, và đó là nó (cho đến khi bạn kết thúc phiên, hoặc ssh-agent của bạn bị giết.)

Mac / OS X

Nếu bạn không muốn bắt đầu một ssh-agent mới mỗi khi bạn mở một thiết bị đầu cuối, hãy kiểm tra Keychain. Tôi đang ở trên máy Mac, vì vậy tôi đã sử dụng hướng dẫn ssh-agent với zsh & keychain trên Mac OS X để thiết lập, nhưng tôi chắc chắn một tìm kiếm của Google sẽ có nhiều thông tin cho Windows.

Cập nhật: Một giải pháp tốt hơn trên Mac là thêm khóa của bạn vào Keychain Mac OS:

ssh-add -K ~/.ssh/id_rsa

Đơn giản như thế.


190
2018-04-09 17:43



FYI: sáp nhập từ stackoverflow.com/questions/4083079/… - Shog9♦
Khi tôi làm eval `ssh-agent -s` quá trình không dừng lại khi tôi thoát Cygwin. - Kiril
Có cách nào để thiết lập cấu hình cho Windows / gitbash vì vậy bạn không phải làm điều đó mỗi lần? - mix3d
Nó phải là ps -u $(whoami) | grep ssh-agent &> /dev/null || eval $(ssh-agent) - nếu không thì một ssh-agent mới được khởi động mọi lúc. Giết máy của tôi mọi lúc và sau đó khi người dùng có cronjobs. - shredding
ForwardAgent yes không cần thiết và là rủi ro bảo mật phi lý thuyết nếu nó được đặt cho bất kỳ máy chủ không đáng tin cậy nào. Quyền truy cập cục bộ vào tác nhân khóa của bạn nên hoạt động bất kể cài đặt này. - SeldomNeedy


Không thể mở kết nối với tác nhân xác thực của bạn

Để giải quyết lỗi này:

bash:

$ eval `ssh-agent -s`

tcsh:

$ eval `ssh-agent -c`

Sau đó sử dụng ssh-add như bạn thường làm.


Mẹo nóng:

Tôi đã luôn luôn quên những gì để gõ cho các lệnh ssh-agent ở trên, vì vậy tôi đã tạo một bí danh trong .bashrctập tin như thế này:

alias ssh-agent-cyg='eval `ssh-agent -s`'

Bây giờ thay vì sử dụng ssh-agent, Tôi có thể sử dụng ssh-agent-cyg

Ví dụ.

$ ssh-agent-cyg
SSH_AUTH_SOCK=/tmp/ssh-n16KsxjuTMiM/agent.32394; export SSH_AUTH_SOCK;
SSH_AGENT_PID=32395; export SSH_AGENT_PID;
echo Agent pid 32395;
$ ssh-add ~/.ssh/my_pk

Nguồn gốc sửa chữa:

http://cygwin.com/ml/cygwin/2011-10/msg00313.html


174
2017-07-17 08:54



Đó có phải là vĩnh viễn không? - CMCDragonkai
bạn sẽ cần phải chạy eval lệnh mỗi khi bạn chạy trước đó ssh-agent. Bây giờ tôi sử dụng bí danh, hãy xem câu trả lời cập nhật về cách tôi thực hiện việc này. - Chris Snow
FYI: sáp nhập từ stackoverflow.com/questions/4083079/… - Shog9♦
Tôi cũng cần sử dụng đặc tả ssh thay vì https (xem help.github.com/articles/changing-a-remote-s-url) - RunHolt
Bạn thưa bạn, bạn thật tuyệt vời. Cảm ơn. ** Tôi phải đối mặt với cùng một vấn đề trong khi nhân bản một repo bitbucket, tôi đã thiết lập một khóa ssh, nhưng vẫn nhận được lỗi: fatal: Could not read from remote repository.. - Nishant Ghodke


Tôi phải đối mặt với cùng một vấn đề cho Linux, và đây là những gì tôi đã làm:

Về cơ bản, lệnh ssh-agent khởi động tác nhân, nhưng nó không thực sự thiết lập các biến môi trường để nó chạy. Nó chỉ xuất ra các biến đó cho trình bao.

Bạn cần phải:

eval `ssh-agent`

và sau đó làm ssh-add. Xem Không thể mở kết nối với tác nhân xác thực của bạn.


103
2017-07-19 06:12



FYI: sáp nhập từ stackoverflow.com/questions/4083079/… - Shog9♦
Câu trả lời này nên được chấp nhận, giải quyết vấn đề của tôi. Cảm ơn - reformed
Không giải quyết được vấn đề của tôi, vấn đề vẫn tồn tại - Brovoker
Làm việc cho tôi quá trong khi có vấn đề bằng cách sử dụng boot2docker trên Windows. - Veve
Đây là những gì nó đã cho tôi. - Tom


ssh-add và ssh (giả sử bạn đang sử dụng các triển khai openssh) yêu cầu một biến môi trường để biết cách nói chuyện với tác nhân ssh. Nếu bạn bắt đầu tác nhân trong cửa sổ nhắc lệnh khác với cửa sổ bạn đang sử dụng ngay bây giờ, hoặc nếu bạn khởi động nó không chính xác, không phải ssh-add và ssh sẽ thấy biến môi trường đó (vì biến môi trường được đặt cục bộ vào dấu nhắc lệnh được đặt trong).

Bạn không nói bạn đang sử dụng phiên bản ssh nào, nhưng nếu bạn đang sử dụng Cygwin's, bạn có thể sử dụng công thức này từ Đại lý SSH trên Cygwin:

# Add to your Bash config file
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
    eval `$SSHAGENT $SSHAGENTARGS`
    trap "kill $SSH_AGENT_PID" 0
fi

Điều này sẽ bắt đầu một đại lý tự động cho mỗi cửa sổ nhắc lệnh mới mà bạn mở (mà là tối ưu nếu bạn mở nhiều lệnh nhắc trong một phiên, nhưng ít nhất nó sẽ hoạt động).


94
2017-11-03 11:53



FYI: sáp nhập từ stackoverflow.com/questions/4083079/… - Shog9♦
Tôi đã được liên kết ở đây từ một câu hỏi SO khác. Tôi có thể hỏi tại sao cần thêm nó vào tập tin cấu hình Bash không? Trên máy của tôi, tất cả những gì tôi cần làm là chạy eval $(ssh-agent) và tôi có thể sử dụng ssh không mật khẩu cho mỗi cửa sổ đầu cuối mới. - Andy J
Điều đó không thể thực hiện được, trừ khi bạn đang khởi chạy các thiết bị đầu cuối mới từ thiết bị đầu cuối đó. - Robin Green
Điều này làm việc hoàn hảo cho tôi. Chúc mừng - dspacejs


Hãy thử các bước sau:

1) Mở Git Bash và chạy: cd ~/.ssh 

2) Cố gắng chạy tác nhân: eval $(ssh-agent)

3) Ngay bây giờ, bạn có thể chạy lệnh sau: ssh-add -l 


88
2017-11-26 13:47



Đây là giải pháp duy nhất ở đây làm việc cho tôi (trên các cửa sổ 7). Đầu tiên tôi sử dụng ps aux | grep ssh và killtrong câu trả lời của Rick để giết các điệp viên. Sau đó ssh-add làm việc mà không có chuyển đổi -l (Sử dụng -l đã đưa ra một lỗi). eval 'ssh-agent' như trong câu trả lời của Rick không hiệu quả, tôi phải sử dụng eval $(ssh-agent) như trong câu trả lời của Chechoro ở đây. - Frug
1 Tôi đã có vấn đề chính xác giống như OP (Windows 7) và đây là giải pháp duy nhất làm việc cho tôi. - Weblurk
FYI: sáp nhập từ stackoverflow.com/questions/4083079/… - Shog9♦
Cố gắng tất cả những người khác và điều này làm việc cho tôi! - ceebreenk
@Frug Đó là backticks, không phải là dấu nháy đơn; trong shell script có nghĩa là để thực hiện những gì có chứa bên trong. $(ssh-agent) tương đương với `ssh-agent` nhưng dễ đọc hơn. - M.M


Trong Windows 10, tôi đã thử tất cả các câu trả lời được liệt kê ở đây nhưng không có câu trả lời nào trong số đó có vẻ hoạt động. Trong thực tế, họ đưa ra một đầu mối. Để giải quyết một vấn đề đơn giản, bạn cần 3 lệnh. Ý tưởng của vấn đề này là ssh-add cần các biến môi trường SSH_AUTH_SOCK và SSH_AGENT_PID được thiết lập với đường dẫn tệp ssh-agent sock và số pid hiện tại.

ssh-agent -s > temp.txt

Điều này sẽ tiết kiệm đầu ra của ssh-agent trong tập tin. Nội dung tệp văn bản sẽ giống như sau:

SSH_AUTH_SOCK=/tmp/ssh-kjmxRb2764/agent.2764; export SSH_AUTH_SOCK;
SSH_AGENT_PID=3044; export SSH_AGENT_PID;
echo Agent pid 3044;

Sao chép một cái gì đó như "/tmp/ssh-kjmxRb2764/agent.2764" từ tệp văn bản và chạy lệnh sau trực tiếp trong bảng điều khiển:

set SSH_AUTH_SOCK=/tmp/ssh-kjmxRb2764/agent.2764

Sao chép một cái gì đó như "3044" từ tệp văn bản và chạy lệnh sau trực tiếp trong bảng điều khiển:

set SSH_AGENT_PID=3044

Bây giờ khi các biến môi trường (SSH_AUTH_SOCK và SSH_AGENT_PID) được thiết lập cho phiên giao diện điều khiển hiện tại chạy lệnh ssh-add của bạn và nó sẽ không thất bại một lần nữa để kết nối ssh agent.


44
2018-06-12 13:58



Cảm ơn bạn! Đây chính xác là những gì tôi cần. - Isochronous
Không, vẫn vậy. - Jaskey
Các bước này giống như thực hiện 'eval $ (ssh-agent)' - K.Nicholas
câu trả lời này giải quyết được vấn đề của tôi rất nhiều - Orhaan
Sửa lỗi trên Windows 10 của tôi! Cảm ơn bạn! - ntl