Câu hỏi Làm thế nào để lấy khóa công khai từ khóa riêng SSH?


Khóa riêng tư SSH được tạo bởi ssh-keygen chứa phần khóa công khai. Làm thế 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 phải đặt nội dung của khóa công khai này trong các máy chủ authorized_keys và không muốn tạo cặp khóa mới.

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


371
2017-07-18 09:57


gốc


pbcopy > ~/.ssh/id_rsa.pub oops. - Nick T
@NickT - pbcopy là một lệnh MacOSX. Thêm vào đó, nó vô ích nếu bạn đã khởi động lại, đăng xuất, hoặc sao chép bất cứ điều gì khác vào clipboard. - jsnfwlr


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


Tôi đã tìm thấy câu trả lời trên Lỗi máy chủ: Tạo khóa SSH công cộng từ khóa riêng tư?

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

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

Như một lưu ý phụ, nhận xét 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.pub và thêm một chú thích vào dòng đầu tiên với dấu cách giữa nhận xét và dữ liệu khóa. Một khóa công khai ví dụ được hiển thị cắt ngắn bên dưới.

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

Đối với các khóa đã được thêm vào SSH Agent (một chương trình chạy ẩn và tránh phải nhập lại cụm từ mật khẩu keyfile nhiều lần), bạn có thể sử dụng ssh-add -L lệnh liệt kê các khóa công khai cho các khóa đã được thêm vào tác nhân (qua ssh-add -l). Điều này rất 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 tư).


577
2017-07-18 10:12



bạn đã làm cho nó miếng bánh. cảm ơn - bragboy
Xin lưu ý rằng tệp khóa riêng của bạn ~/.ssh/id_rsa phả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_rsa và nhập thông tin đăng nhập gốc của bạn để hạn chế thông tin đăng nhập, khi đó 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 không bị giới hạn. - Mark Mikofski
@MarkMikofski Không cần sudo, bạn phải sở hữu khóa riêng tư rồi. Nếu không, bạn không thể đọc nó ngay từ đầu. - Lekensteyn
@Lekensteyn cảm ơn, tất nhiên bạn nói đúng !. Cũng thế 400 được khuyến khích vì không cần viết để nhập tệp khóa cá nhân. Lệnh được sửa sẽ là $ chmod 400 ~/.ssh/id_rsa - Mark Mikofski
Nhận xét khóa cá nhân bị mất. Xem stackoverflow.com/questions/38290929/… - weberjn


Đây là 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ố từ chối 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 cặp khóa công khai / riêng 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 cá nhân hiện có:

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

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

    Nếu bạn làm không phải 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 Tham số ... và điều quan trọng là bạn để trống trường 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ư).

    Sample Key Generation pic

  2. Tạo một tệp 'authorized_keys' mới (với Notepad):

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

    Đảm bảo 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 sẽ thấy cấu trúc thư mục chính tại máy từ xa của bạn.

    Tải lên tệp authorized_keys vào thư mục chính tại máy từ xa.

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

    Làm một .ssh thư 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ế mọi tệp hiện có authorized_keys tập tin; 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 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 Khóa OpenSSH, chứng chỉ .pem và .pub


12
2017-11-20 06:18



Nếu thư mục chính của bạn được mã hóa, hãy thực hiện việc này: askubuntu.com/questions/439184/… - devprashant
mặc dù câu trả lời của bạn không thực sự liên quan đến câu hỏi, tôi bỏ phiếu cho nó vì sự nhiệt tình của bạn. - Truong Nguyen