Bagaimana cara mengambil kunci publik dari kunci pribadi SSH?

444

Kunci pribadi SSH yang dihasilkan oleh ssh-keygenberisi bagian kunci publik. Bagaimana cara mengambil kunci publik ini dari kunci pribadi? Saya telah kehilangan kunci publik saya dan perlu memasukkan konten kunci publik ini di authorized_keysfile server dan tidak ingin membuat pasangan kunci baru.

Atau sebagai ungkapan: bagaimana cara membuat id_rsa.pubfile dari id_rsafile?

Lekensteyn
sumber
pbcopy > ~/.ssh/id_rsa.puboops.
Nick T
@NickT - pbcopy adalah perintah MacOSX. Plus, tidak ada gunanya jika Anda telah reboot, logout, atau menyalin hal lain ke clipboard.
jsnfwlr

Jawaban:

681

Saya menemukan jawaban pada Kesalahan Server: Membuat kunci SSH publik dari kunci pribadi?

Opsi -ymenampilkan kunci publik:

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

Sebagai catatan tambahan, komentar kunci publik hilang. Saya sudah memiliki situs yang memerlukan komentar (Launchpad?), Jadi Anda perlu mengedit ~/.ssh/id_rsa.pubdan menambahkan komentar ke baris pertama dengan spasi antara komentar dan data utama. Contoh kunci publik ditunjukkan terpotong di bawah ini.

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

Untuk kunci yang ditambahkan ke Agen SSH (program yang berjalan di latar belakang dan menghindari perlunya memasukkan kembali frasa sandi keyfile berulang-ulang), Anda dapat menggunakan ssh-add -Lperintah untuk mendaftar kunci publik untuk kunci yang ditambahkan ke agen (via ssh-add -l). Ini berguna ketika kunci SSH disimpan pada kartu pintar (dan akses ke file kunci pribadi tidak dimungkinkan).

Lekensteyn
sumber
1
Harap perhatikan bahwa file kunci pribadi Anda ~/.ssh/id_rsaharus dibatasi untuk nama pengguna Anda. gunakan $ sudo chmod 600 ~/.ssh/id_rsadan masukkan kredensial root Anda untuk membatasinya, maka Anda bisa menampilkan file kunci publik. Kalau tidak, Anda akan mendapatkan peringatan file kunci pribadi tidak terbatas.
Mark Mikofski
12
@MarkMikofski Tidak perlu sudo, Anda sudah seharusnya memiliki kunci pribadi. Kalau tidak, Anda tidak dapat membacanya sejak awal.
Lekensteyn
7
@Lekensteyn terima kasih, tentu saja Anda benar !. Juga 400disarankan karena tidak perlu menulis untuk mengetik file kunci pribadi. Perintah yang diperbaiki harus$ chmod 400 ~/.ssh/id_rsa
Mark Mikofski
Komentar kunci pribadi hilang. Lihat stackoverflow.com/questions/38290929/…
weberjn
1
@weberjn Kunci pribadi ( id_rsafile) tidak memiliki komentar, tetapi memang komentar dalam file kunci publik ( id_rsa.pub) hilang.
Lekensteyn
14

Ini adalah solusi yang khusus untuk pengguna yang menggunakan Windows untuk SSH ke mesin jarak jauh mereka, termasuk gambar cloud di Amazon AWS dan GCE.

(Penolakan)

Baru-baru ini saya menggunakan solusi ini untuk login jarak jauh ke gambar VM yang baru digunakan pada GCE.


Alat yang digunakan:

  1. puttygen
  2. WinSCP

Langkah-langkah untuk melakukan:

  1. Hasilkan pasangan kunci publik / pribadi menggunakan puttygen.
  2. Unggah kunci publik ke server Anda di cloud atau lokasi terpencil.

Deskripsi (bagaimana melakukannya):

  1. Hasilkan kunci / pasangan atau gunakan kunci pribadi yang ada:

    Jika Anda memiliki kunci pribadi:

    Buka puttygen, tekan tombol muat dan pilih file kunci pribadi Anda (* .pem).

    Jika Anda tidak memiliki kunci pribadi:

    • Buka puttygen,
    • Pilih jenis kunci yang diinginkan SSH2 DSA (Anda dapat menggunakan RSA atau DSA) di dalam bagian Parameter ... dan penting bahwa Anda membiarkan bidang kata sandi kosong,
    • Tekan buat dan ikuti instruksi untuk menghasilkan pasangan kunci (publik / pribadi).

    Contoh Generasi Kunci foto

  2. Buat file 'otor_keys' baru (dengan Notepad):

    Salin data kunci publik Anda dari bagian "Kunci publik untuk menempel ke file OpenSSH Authorized_key" dari Generator Kunci Putty, dan rekatkan data kunci ke file "Authorized_keys".

    Pastikan hanya ada satu baris teks dalam file ini.

  3. Unggah kunci ke server Linux:

    • Buka WinSCP,
    • Pilih protokol file SFTP dan masuk dengan kredensial SSH Anda.
    • Jika berhasil, Anda melihat struktur direktori home di mesin jarak jauh Anda.

    Unggah file otor_keys ke direktori home di mesin jarak jauh.

  4. Tetapkan izin yang tepat:

    Buat .sshdirektori (jika tidak ada)

    Salin authorized_keysfile ke direktori .ssh (ini akan menggantikan authorized_keysfile yang ada ; perhatikan ini).

    Jika file ada, cukup tambahkan konten file ini ke file yang ada.

    Jalankan perintah untuk mengatur izin:

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

Sekarang Anda akan dapat ssh ke mesin jarak jauh tanpa memasukkan kredensial setiap waktu.

Bacaan lebih lanjut:

  1. Membuat dan mengunggah kunci SSH di bawah Windows

  2. Otentikasi tanpa kata sandi menggunakan Kunci OpenSSH, sertifikat .pem dan .pub

penyembah
sumber
Jika direktori home Anda dienkripsi, lakukan ini: askubuntu.com/questions/439184/…
devprashant
2
walaupun jawaban Anda tidak benar-benar relevan dengan pertanyaan, saya memilihnya karena antusiasme Anda.
Truong Nguyen