Sử dụng khóa được chỉ định từ ssh-agent


11

Dọc theo dòng Làm thế nào để nói với git sử dụng khóa riêng nào? Tôi muốn sử dụng một khóa ssh cụ thể trong một tình huống nhất định.

Vấn đề của tôi là ngay cả khi tôi chỉ định '-i một cái gì đó' ssh sử dụng các khóa từ tác nhân ssh của tôi theo thứ tự chúng được thêm vào.

Tình hình cụ thể của tôi:

  • Tôi có hai người dùng github, mỗi người dùng có khóa riêng mà tôi muốn - ví dụ qua ssh-config - cho mỗi bản sao chỉ định khóa nào sẽ sử dụng:

    Lưu trữ USER1.git

    Tên máy chủ github.com

    Người dùng git

    Danh tínhFile ~ / .ssh / USER1.id_rsa

ssh -vt USER1.git

vẫn sẽ sử dụng USER2.id_rsa nếu đó là khóa đầu tiên được thêm vào ssh-agent.

Câu trả lời:


5

Tôi cuối cùng cũng có nó để làm việc:

Host USER1.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER1.id_rsa

Host USER2.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER2.id_rsa
  • Đếm thụt.
  • Làm ssh-add -lvà đảm bảo cả hai khóa của bạn đã được thêm vào.
    • Sao chép / dán từng đường dẫn từ ssh-add -lvào dòng thích hợp ~/.ssh/configđể tránh lỗi chính tả. Nếu có một ~/.ssh/configlỗi chính tả đường dẫn nhận dạng cho USER1, thì khóa sai (khóa của USER2) sẽ được sử dụng thay thế.

Tôi đã nhận được hướng dẫn tại BitBucket. Họ nên làm việc cho GitHub vì sự khác biệt duy nhất là HostName: http://confluence.atlassian.com/pages/viewpage.action?pageId=271943168#ConfiguringMult MônSSHIdentitiesforGitBashMacOSXLinux-CreateaSSHconfigfile

Để làm cho điều này hoạt động trên một máy chủ từ xa bằng cách sử dụng chuyển tiếp đại lý, hãy thử đề xuất của @ stijn-hoop bên dưới (trong phần bình luận của câu trả lời này).


3
Để biết bình luận cuối cùng của bạn về việc chuyển tiếp đại lý, hãy xem câu trả lời này: superuser.com/questions/273037/ trên
Stijn Hoop

1

Sử dụng IdentitiesOnly yesbên dưới các máy chủ này, trong .ssh / config.


1
nhưng sau đó nó sẽ không sử dụng tác nhân và buộc tôi phải nhập cụm mật khẩu cho tất cả các kết nối github
svrist

1
Vâng, đây là cách nó hoạt động. Bạn không thể chọn giữa các khóa khác nhau khi sử dụng ssh-agent. Một cách là bắt đầu nhiều tác nhân ssh và chuyển đổi giữa chúng bằng cách sử dụng các trình bao bọc khác nhau cho các hoạt động github khác nhau hoặc chỉ chuyển đổi giữa các tác nhân ssh (thay đổi SSH_AUTH_SOCK)
Cougar

6
Nhận xét trên không chính xác - bạn CÓ THỂ chọn danh tính từ đại lý ssh của mình. Xem thêm câu trả lời tôi đã đề cập ở trên, superuser.com/questions/273037/ từ
Stijn Hoop

0

Vấn đề là sử dụng tệp khóa công khai bên trong IdentityFilechỉ thị.

Host USER1.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER1.id_rsa.pub

Host USER2.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER2.id_rsa.pub

Nếu chúng tôi chỉ định khóa riêng bên trong cấu hình SSH, tác nhân SSH sẽ không chọn đúng khóa nếu khóa riêng được mã hóa.

Một câu hỏi tương tự trên stackexchange: https://unix.stackexchange.com/a/495785/264704

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.