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?


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).


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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.