Làm cách nào để truy xuất khóa chung từ khóa riêng SSH?


444

Khóa riêng SSH được tạo bởi ssh-keygenchứa một phần khóa chung. Làm cách nào để lấy khóa công khai này từ khóa riêng? Tôi đã mất khóa công khai của mình và cần đưa nội dung của khóa chung này vào authorized_keystệp máy chủ và không muốn tạo cặp khóa mới.

Cách khác: làm cách nào để tạo id_rsa.pubtập tin từ một id_rsatập tin?


pbcopy > ~/.ssh/id_rsa.pubÚi.
Nick T

@NickT - pbcopy là lệnh MacOSX. Ngoài ra, thật vô ích nếu bạn đã khởi động lại, đăng xuất hoặc sao chép bất cứ thứ gì khác vào bảng tạm.
jsnfwlr

Câu trả lời:


681

Tôi đã tìm thấy câu trả lời trên Server Fault: Tạo khóa SSH công khai từ khóa riêng?

Tùy chọn -yxuất khóa công khai:

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

Như một lưu ý phụ, bình luận của khóa công khai bị mất. Tôi đã có một trang web yêu cầu nhận xét (Launchpad?), Vì vậy bạn cần chỉnh sửa ~/.ssh/id_rsa.pubvà nối thêm nhận xét vào dòng đầu tiên có khoảng cách giữa nhận xét và dữ liệu chính. Một ví dụ khóa công khai được hiển thị cắt ngắn dưới đây.

ssh-rsa AAAA..../VqDjtS5 ubuntu@ubuntu

Đối với các khóa đã được thêm vào Tác nhân SSH (một chương trình chạy trong nền và tránh phải nhập lại cụm mật khẩu khóa nhiều lần), bạn có thể sử dụng ssh-add -Llệnh để liệt kê các khóa chung cho các khóa được thêm vào các đại lý (thông qua ssh-add -l). Điều này hữu ích khi khóa SSH được lưu trữ trên thẻ thông minh (và không thể truy cập vào tệp khóa riêng).


1
Xin lưu ý rằng tệp khóa riêng của bạn ~/.ssh/id_rsaphải được giới hạn trong tên người dùng của bạn. sử dụng $ sudo chmod 600 ~/.ssh/id_rsavà nhập thông tin gốc của bạn để hạn chế nó, sau đó bạn có thể xuất tệp khóa công khai. Nếu không, bạn sẽ nhận được cảnh báo tập tin khóa riêng không hạn chế.
Đánh dấu Mikofski

12
@MarkMikofski Không cần sudo, bạn phải sở hữu khóa riêng rồi. Nếu không, bạn không thể đọc nó ở nơi đầu tiên.
Lekensteyn

7
@Lekensteyn cảm ơn, tất nhiên là bạn đúng!. Cũng 400được khuyến khích vì không cần phải ghi để gõ tệp khóa riêng. Lệnh đã được sửa phải là$ chmod 400 ~/.ssh/id_rsa
Đánh dấu Mikofski

Bình luận khóa riêng bị mất. Xem stackoverflow.com/questions/38290929/ trên
weberjn

1
@weberjn Khóa riêng ( id_rsatệp) không có nhận xét, nhưng thực sự bình luận trong tệp khóa công khai ( id_rsa.pub) bị mất.
Lekensteyn

14

Đây là một giải pháp dành riêng cho người dùng sử dụng Windows để SSH vào các máy từ xa của họ, bao gồm cả hình ảnh đám mây trên Amazon AWS và GCE.

(Tuyên bố miễn trừ trách nhiệm)

Gần đây tôi đã sử dụng giải pháp này để đăng nhập từ xa vào các hình ảnh VM được triển khai mới trên GCE.


Công cụ được sử dụng:

  1. puttygen
  2. WinSCP

Các bước thực hiện:

  1. Tạo một cặp khóa công khai / riêng tư bằng cách sử dụng puttygen.
  2. Tải khóa công khai lên máy chủ của bạn trong đám mây hoặc vị trí từ xa.

Mô tả (cách thực hiện):

  1. Tạo khóa / cặp hoặc sử dụng khóa riêng hiện có:

    Nếu bạn có khóa riêng:

    Mở puttygen, nhấn nút tải và chọn tệp khóa riêng (* .pem) của bạn.

    Nếu bạn không có khóa riêng:

    • Mở puttygen,
    • Chọn loại khóa mong muốn SSH2 DSA (bạn có thể sử dụng RSA hoặc DSA) trong phần Thông số ... và điều quan trọng là bạn để trống trường cụm mật khẩu,
    • Nhấn tạo và làm theo hướng dẫn để tạo cặp khóa (công khai / riêng tư).

    Mẫu pic thế hệ chính

  2. Tạo một tệp 'ủy quyền' mới (bằng Notepad):

    Sao chép dữ liệu khóa công khai của bạn từ phần "Khóa chung để dán vào tệp OpenSSH ủy quyền" của Trình tạo khóa PuTTY và dán dữ liệu khóa vào tệp "ủy quyền".

    Hãy chắc chắn rằng chỉ có một dòng văn bản trong tệp này.

  3. Tải khóa lên máy chủ Linux:

    • Mở WinSCP,
    • Chọn giao thức tệp SFTP và đăng nhập bằng thông tin đăng nhập SSH của bạn.
    • Khi thành công, bạn thấy cấu trúc thư mục chính tại máy từ xa của bạn.

    Tải tập tin ủy quyền lên thư mục chính tại máy từ xa.

  4. Đặt quyền thích hợp:

    Tạo một .sshthư mục (nếu nó không tồn tại)

    Sao chép authorized_keystệp vào thư mục .ssh (điều này sẽ thay thế bất kỳ authorized_keystệp hiện có nào ; hãy lưu ý điều này).

    Nếu tệp tồn tại, chỉ cần thêm nội dung của tệp này vào tệp hiện có.

    Chạy các lệnh để đặt quyền:

    sudo chmod 700 .ssh && chmod 600 .ssh/authorized_keys
    

Bây giờ bạn sẽ có thể ssh vào một máy từ xa mà không cần nhập thông tin đăng nhập mỗi lần.

Đọc thêm:

  1. Tạo và tải lên các khóa SSH trong Windows

  2. Xác thực không có mật khẩu bằng OpenSSH Key, chứng chỉ .pem và .pub


Nếu thư mục nhà của bạn được mã hóa, hãy làm điều này: Askubfox.com/questions/439184/ trên
devprashant

2
Mặc dù câu trả lời của bạn không thực sự phù hợp với câu hỏi, tôi bỏ phiếu cho câu hỏi vì sự nhiệt tình của bạn.
Trương Nguyễn
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.