2010-06-04 31 views
9

ssh-add -l hiển thị rằng tôi đã thêm 3 khóa RSA vào tác nhân SSH của mình. ssh-add -L hiển thị các khóa công cộng. Làm thế nào để tôi có được các khóa riêng tư, để tôi có thể lưu chúng vào một tập tin? Hoặc là do thiết kế rằng điều này là không thể, tức là ssh-agent có thể được yêu cầu thực hiện các thao tác bằng khóa riêng, nhưng nó sẽ không bao giờ trả về chính khóa đó? Nếu nó là như vậy, sau đó làm thế nào tôi có thể yêu cầu nó để mã hóa/giải mã một số cho tôi?Làm thế nào để trích xuất các khóa riêng từ một tác nhân ssh?

OK là tôi phải viết mã cho điều này (ngôn ngữ lập trình không quan trọng), nhưng tôi muốn sử dụng công cụ hiện có hoặc thư viện.

Trả lời

5

Tôi vừa tìm được giải thích rất tốt về cách tác nhân ssh hoạt động: http://www.unixwiz.net/techtips/ssh-agent-forwarding.html. Điều này một phần trả lời một số câu hỏi của tôi.

  • Một trong những khía cạnh thông minh hơn của các đại lý là làm thế nào nó có thể xác minh danh tính của người dùng (hay chính xác hơn, sở hữu của một private key) mà không để lộ rằng khóa riêng cho bất kỳ ai.

  • Một trong những lợi ích bảo mật của chuyển tiếp tác nhân là khóa riêng của người dùng không bao giờ xuất hiện trên hệ thống từ xa hoặc trên dây, ngay cả ở dạng được mã hóa.

Theo như tôi hiểu được lời giải thích đó, các giao thức giữa máy khách SSH và ssh-agent proviedes không có cách nào trong SSH1 hoặc SSH2 để thoát khỏi các phím tin từ một ssh-agent.

+2

Đó không thực sự là câu trả lời cho câu hỏi - cụ thể là, liệu có cách nào để hỏi ssh-agent cho các khóa đã được giải mã của nó hay không, ví dụ để cho chúng ăn một số ứng dụng SSH khác không biết cách sử dụng ssh-agent. –

+2

Câu trả lời cho câu hỏi: không, không thể. Lis có thể là gì có thể được liệt kê trong tài liệu được liên kết, và điều này là không. – pts

+1

Hoàn toàn trái ngược, _everything_ là có thể trong một thế giới ảo, nó chỉ phụ thuộc vào thời gian và công sức để đạt được mục tiêu. Ví dụ, đây là cách bạn có thể trích xuất/lấy cắp khóa từ ssh-agent: https://blog.netspi.com/stealing-unencrypted-ssh-agent-keys-from-memory/ – galaxy

-1

đây là câu hỏi sysadmin hơn, nhưng chỉ cần tìm trong ~/.ssh/id_rsa hoặc id_dsa cho khóa riêng tư. Họ phải vào đại lý ssh ngay từ đầu ...

+0

Tôi biết về các tệp '~/.ssh/id *' và tôi không quan tâm đến chúng. Tôi muốn truy cập vào các phím trong bộ nhớ * của một ssh-agent. – pts

+1

Tôi quan tâm đến các khóa được thêm từ các máy chủ khác (thông qua chuyển tiếp tác nhân) và không thuận tiện để kết nối lại với các máy chủ này để đọc các tệp nữa. – pts

1

Trong trường hợp của tôi, tôi vô tình xóa thư mục .ssh nhưng khóa của tôi được tải. Nhưng kể từ khi tôi không thể phục hồi những người từ ssh-add vì vậy tôi đã phải sử dụng phần mềm phục hồi tập tin.

+1

Là một phần mềm khôi phục đĩa thay thế, bạn có thể đổ bộ nhớ của một tiến trình đang chạy Linux (ví dụ * ssh-agent *) làm gốc ('sudo cat/proc/$$/mem', nhưng thêm tìm kiếm thích hợp). Có lẽ phần mềm khôi phục đĩa dễ sử dụng hơn. – pts

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