Bagaimana cara menambahkan kata sandi ke kunci pribadi OpenSSH yang dibuat tanpa kata sandi?

213

Saya menghasilkan kunci pribadi OpenSSH menggunakan puttygen (dan mengekspornya dalam format OpenSSH). Bagaimana saya bisa meletakkan kata sandi pada kunci yang ada ini (saya tahu cara membuat kunci baru dengan kata sandi)?

Conrad
sumber
13
Jika Anda melihat komentar ini, harap tandai salah satu jawaban sebagai diterima atau tulis komentar yang melewatkannya. Terima kasih!
Benjamin Atkin
1
Tambah sama dengan mengubah atau menghapus: stackoverflow.com/questions/112396/… , mungkin sama untuk perubahan: serverfault.com/questions/50775/…
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
Jika Anda mendapatkan Bad passphrasepada id_ed25519kunci tapi password benar, maka Anda mungkin menggunakan tingkat bawah ssh-keygenuntuk mengelolanya.
jww

Jawaban:

350

Coba perintahnya ssh-keygen -p -f keyfile

Dari halaman manual ssh-keygen

 -p      Requests changing the passphrase of a private key file instead of
         creating a new private key.  The program will prompt for the file
         containing the private key, for the old passphrase, and twice for
         the new passphrase.

 -f filename
         Specifies the filename of the key file.

Contoh:

ssh-keygen -p -f ~/.ssh/id_rsa
sigjuice
sumber
5
Bagi mereka yang ingin tahu apa -f adalah: Ini menentukan file input.
Neikos
4
//, @sigjuice, tolong kirimkan contoh, seperti $ ssh-keygen -p -f /Users/sigjuice/.ssh/id_rsa? Ini mungkin membantu orang yang tidak tahu cara membedakan antara kunci publik dan kunci privat, dan membantu mereka membuat kaki mereka lebih cepat basah.
Nathan Basanese
Untuk beberapa alasan, pada MacOS 10.14, ini tidak memformat file dengan Proc-Type: 4,ENCRYPTEDheader, yang tidak kompatibel dengan beberapa aplikasi yang memeriksa frasa sandi. Setelah mencoba beberapa cara untuk membuatnya berfungsi, cara termudah untuk mengatasinya adalah melakukan hal yang sama di dalam wadah Docker yang menjalankan Ubuntu dan kemudian menyalin kunci kembali ke Mac saya.
ryanbrainard
38

Gunakan opsi -p untuk ssh-keygen. Ini memungkinkan Anda untuk mengubah kata sandi daripada membuat kunci baru.

Ubah kata sandi seperti yang ditunjukkan oleh sigjuice:

ssh-keygen -p -f ~/.ssh/id_rsa

Kata sandi yang diperlukan akan menjadi kata sandi baru. (Ini mengasumsikan Anda telah menambahkan kunci publik ~/.ssh/id_rsa.pubke file otor_keys Anda.) Uji dengan ssh:

ssh -i ~/.ssh/id_rsa localhost

Anda dapat memiliki beberapa tombol dengan nama berbeda untuk penggunaan berbeda.

BillThor
sumber
//, Tolong tunjukkan contoh, dan bagaimana memeriksa bahwa opsi telah bekerja, @BillThor?
Nathan Basanese
Saya tidak mengerti. Frasa sandi diatur, saya melihat ketika saya mencoba mengubahnya lagi. Tetapi ketika saya mencoba masuk ke server jarak jauh, ia tidak meminta kata sandi kata sandi ini, mengapa?
Luka
1
Tidak apa-apa. Ia bertanya sekali per sesi :) Tidak tahu itu.
Luka
Apakah ini berarti Anda harus keluar dan masuk lagi? Menutup jendela terminal dan membukanya kembali tidak berhasil untuk saya.
Simon H
Anda dapat mengetik ssh-add -Duntuk menghapus identitas cache Anda. Kemudian, coba sambungkan lagi dan ia akan menanyakan kata sandi Anda. Gunakan ssh-add -luntuk melihat daftar identitas cache Anda.
Scott Nedderman
3

Anda juga dapat menggunakan openssl:

openssl rsa -aes256 -in ~/.ssh/your_key -out ~/.ssh/your_key.enc
mv ~/.ssh/your_key.enc ~/.ssh/your_key
chmod 600 ~/.ssh/your_key

lihat: https://security.stackexchange.com/a/59164/194668

bagikan
sumber
Saya pikir saya akan mengambil jalan ssh-keygen ;)
Michael P. Bazos
Terima kasih telah memberikan alternatif openssl untuk melakukan tugas.
Nadjib Mami