Dialog kata sandi muncul ketika izin kunci pribadi SSH diatur ke 0600

71

Saya menginstal kunci pribadi SSH saya ~/.ssh/id_rsadan mengatur izinnya 0600. Ketika saya terhubung ke server SSH yang menggunakan kunci pribadi saya di Terminal.app via ssh, sebuah dialog muncul dan meminta saya untuk memasukkan kata sandi saya untuk mengakses id_rsafile:

masukkan deskripsi gambar di sini

Saya melihat dialog yang sama ketika saya terhubung ke server FTP dengan klien GUI Interarki.

Pembaruan: Saya melihat dialog ini setiap kali saya terhubung terlepas dari apakah saya memeriksa "Ingat kata sandi di gantungan kunci saya". Muncul dua kali lagi jika tombol OK diklik terlepas dari apa yang dimasukkan di bidang kata sandi.

Ketika saya melonggarkan izin ini untuk, katakanlah, 0640saya tidak lagi melihat dialog yang meminta kata sandi saya tetapi sshdibatalkan dengan kesalahan berikut:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@
@ PERINGATAN: FILE KUNCI PRIVATE YANG TIDAK DILINDUNGI! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@
Izin 0640 untuk '/ Pengguna / nama pengguna /.ssh/id_rsa' terlalu terbuka.
Disarankan bahwa file kunci pribadi Anda TIDAK dapat diakses oleh orang lain.
Kunci pribadi ini akan diabaikan.
izin buruk: abaikan kunci: / Pengguna / nama pengguna /.ssh/id_rsa

Saya menemukan dialog kata sandi sangat mengganggu dan saya yakin harus ada beberapa cara untuk menghindari harus mengabaikan dialog ini SSH perlu mengakses id_rsafile.

Catatan: Saya menjalankan Mac OS X 10.6.8.

titaniumdecoy
sumber

Jawaban:

70

Pastikan Anda memiliki yang sesuai id_rsa.pubatau id_dsa.pubdi ~/.sshdirektori Anda .

Ketika saya memiliki id_rsatetapi tidak sesuai id_rsa.pub, Mac OS X terus muncul dialog dan ingat passowrd di gantungan kunci saya tidak melakukan apa pun.

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

menghasilkan file kunci publik yang sesuai untuk saya.

Jika Anda sudah memiliki file publik di sana (ubah nama menjadi nama lain) dan buat kunci publik lagi menggunakan perintah di atas, Anda akan melihat bahwa yang dibuat dan yang lama tidak sama. Entah bagaimana versi Mac OS X yang lama menghasilkan kunci publik yang tidak disukai Lion lagi, membuatnya lagi memperbaikinya.

Bagi yang penasaran, kuncinya persis sama, bagian yang berubah adalah bahwa tidak ada bagian "komentar" setelah kunci pada file lebih lama.

Constantine Sapuntzakis
sumber
2
Solusi ini mungkin tidak masuk akal pada pandangan pertama, tetapi cobalah. Saya mengalami masalah yang persis sama dan memperbaikinya. Saya selalu menggunakan kata sandi pada tombol ssh saya dan Anda juga harus melakukannya.
Alex Recarey
3
Solusi ini berhasil untuk saya. Tidak masuk akal tapi berhasil! (OS X Lion)
bruno077
2
Wow, itu sama sekali tidak masuk akal, tapi itu pasti memperbaiki banyak perilaku aneh di sistem saya. Terima kasih.
Warren Pena
2
Untuk kehidupan saya, saya belum bisa menemukan solusi selama berhari-hari dengan masalah yang sama dan ini memperbaikinya untuk saya. Ini tidak masuk akal sama sekali tetapi itu memperbaiki masalah saya! Terima kasih, terunggah.
Danny Englander
OMG terima kasih! Bekerja untuk saya (singa gunung dan menggunakan SourceTree) dialog-dialog itu sangat menjengkelkan.
Sebastian Sastre
91

Pertama, jalankan ssh-add -Kdan periksa apakah ini memperbaiki masalah Anda.

Jika tidak:

  • Menghapus file rsa_id.pub dan membuat ulang yang baru (harus dalam ~ / .ssh /):

    ssh-keygen -y -f id_rsa > id_rsa.pub
  • Izin yang dipastikan disetel ke 600 untuk id_rsa dan id_rsa.pub (harus dalam ~ / .ssh /):

    chmod 600 id_rsa*
  • Jalankan perintah berikut:

    ssh-add -K

Setelah melakukan ini, saya tidak lagi diminta untuk memberikan kata sandi kunci pribadi saya. Tampaknya ini benar-benar memasukkan kata sandi kunci pribadi di lokasi gantungan kunci yang benar untuk OS X untuk digunakan.

Reed
sumber
7
Apakah GILA GILA sampai saya menemukan perintah "ssh-add -K" Anda. Saya tidak percaya betapa rumitnya OSX membuat sesuatu. +1000
eduncan911
4
fwiw, saya perlu chmod 600(bukannya 644) agar bisa berfungsi
kangax
1
Kunci Privat dengan 644 tidak ada bueno
xtian
15
ssh-add -Kmenyelesaikan masalah saya
Spechal
2
Tidak upvoting sampai chmod 644 dikoreksi ke chmod 600, ini tidak aman.
Tomáš Kafka
20

Dalam kasus saya ssh-add -Ktidak melakukan trik, saya harus menentukan kuncinya:

ssh-add ~/.ssh/id_rsa
nathancahill
sumber
tidak ada -Kpilihan lagi. Solusi Anda memperbaikinya. Saya bertanya-tanya mengapa saya perlu melakukan ini. Tidak pernah ada kata sandi yang diminta.
DannyRe
Terima kasih! Inilah saat OS X Sierra akhirnya meminta kata sandi id_rsa saya.
Tomáš Kafka
2
FWIW, -Kbendera itu berfungsi untuk saya di Sierra 10.12.2
Chris Wagner
Ya. Saya bisa konfirmasi. -K memang ada dan memperbaiki masalah di Sierra terbaru! Kerja bagus @nathancahill.
Matt Komarnicki
17

Untuk macOS 10.12 Sierra ssh-add -Kharus dijalankan setelah setiap reboot. Untuk menghindari ini, buat ~/.ssh/configdengan konten ini.

Host *
   AddKeysToAgent yes
   UseKeychain yes
   IdentityFile ~/.ssh/id_rsa

Apple telah menambahkan Technote 2449 yang menjelaskan apa yang terjadi.

Sebelum macOS Sierra, ssh akan menyajikan dialog yang meminta frasa sandi Anda dan akan menawarkan opsi untuk menyimpannya di gantungan kunci. UI ini sudah usang beberapa waktu lalu dan telah dihapus.

Sunting: Rupanya menentukan host dan kunci tidak perlu. Menambahkan ini saja sudah cukup.

AddKeysToAgent yes
UseKeychain yes
orkoden
sumber
Inilah yang bekerja untuk saya. Pada awalnya saya mencoba ssh-add -K, tetapi perubahan hanya akan berfungsi sampai saya reboot.
Gandalf458
Saya perlu menempatkan AddKeysToAgentdi tingkat atas ~/.ssh/config.
Radon Rosborough
12

Anda harus memasukkan frasa sandi untuk kunci pribadi di suatu tempat, dan OS X menggunakan ssh-agent secara default.

Jika Anda ingin menggunakan ssh-agent tetapi ingin menghindari kotak dialog gui, Anda dapat menggunakan ssh-add untuk menambahkan frasa sandi ke agen dan kemudian ssh seperti biasa.

Jika tidak ingin menggunakan ssh-agent dan sebagai gantinya memiliki ssh prompt untuk frasa sandi, maka hapus pengaturan variabel lingkungan SSH_AUTH_SOCK.

zzz
sumber
Terima kasih, Alrescha. Apakah Anda tahu jika ada cara untuk menyimpan kata sandi kunci pribadi Anda di gantungan kunci Mac OS X secara permanen (tidak hanya untuk satu sesi)?
titaniumdecoy
3
Anda dapat mencoba 'ssh-add -K' di Terminal, tetapi jika ada bug di mana mencentang kotak tidak bekerja maka ini mungkin tidak berhasil juga. Saya tidak ingin kata sandi ssh saya disimpan di gantungan kunci sehingga saya belum mengujinya.
zzz
Dengan ssh-add -Ksaya tidak harus memasukkan kata sandi saya untuk menghubungkan tetapi prompt masih muncul; Saya hanya mengabaikannya.
titaniumdecoy
3
ssh-add -K adalah apa yang Anda gunakan untuk menambahkan kata sandi ke gantungan kunci. Jika Anda tidak memasukkan kata sandi, itu tidak bisa dimasukkan ke gantungan kunci.
zzz
1
tambahan: Di Lion dan Snow Leopard, jika saya masuk ssh-add -K, saya mendapatkan prompt di Terminal - bukan kotak dialog.
zzz
8

Saat Anda mengendurkan izin, kuncinya diabaikan. Anda tidak akan mendapatkan apa-apa dengan melakukan ini.

Jika Anda ingin menggunakan kunci tanpa harus memasukkan kata sandi setiap kali, Anda memiliki dua opsi.

Jika Anda memeriksa "Ingat kata sandi di gantungan kunci saya", Anda tidak perlu mengetik kata sandi setiap kali: kata sandi akan disimpan di gantungan kunci dengan semua kata sandi Anda yang lain. Ini adalah opsi yang disarankan.

Anda dapat membuat file kunci pribadi tanpa kata sandi. Anda dapat mengubah file kunci pribadi yang ada sehingga tidak dilindungi kata sandi (mengubah kata sandi hanya memengaruhi file kunci, bukan kunci itu sendiri). Dari baris perintah, jalankan ssh -p, masukkan frasa sandi yang ada, dan kemudian biarkan kata sandi yang baru kosong. Ada risiko keamanan karena memiliki frasa sandi kosong: siapa pun yang dapat mengakses file kunci pribadi Anda (misalnya dengan mengakses cadangan Anda) dapat menggunakannya secara instan.

Gilles
sumber
Terima kasih atas jawabannya, meskipun satu hal yang saya lupa sebutkan - memeriksa opsi "Ingat kata sandi di gantungan kunci saya" tidak berpengaruh: dialog muncul kembali saat berikutnya saya terhubung. (Menggunakan frasa sandi kosong bukan pilihan bagi saya.)
titaniumdecoy
3
Menyarankan untuk mengganti kunci yang dilindungi kata sandi dengan kunci tanpa kata sandi benar-benar ide yang mengerikan ...
Schmurfy
5

jika Anda telah menambahkan kunci pribadi Anda ke direktori source ~ / .ssh, dan Anda telah memasukkan ssh-add -K untuk menambahkannya ke gantungan kunci, dan Anda memiliki konten kunci publik Anda disalin ke .ssh / berwenang_keys (untuk yang benar akun) file di server target kotak dialog hilang.

ini merupakan kombinasi yang rumit dari file, izin, lokasi, dan perintah sehingga dapat memakan waktu. saya tidak akan terburu-buru mengambil kesimpulan tentang bug.

David Griffis
sumber
3

Saya memiliki masalah yang persis sama pada Lion (Mac OS X 10.7). Saya pikir itu adalah bug ... Jika otentikasi ssh adalah kata sandi, klien harus melalui kunci publik terlebih dahulu yang normal. Namun, meskipun Anda memilih untuk menyimpan frasa sandi pada gantungan kunci (yang tidak diperlukan untuk otentikasi kata sandi) lain kali ketika koneksi ssh baru dibuat, Anda diminta lagi untuk kata sandi ...

Stefan
sumber
1
Saya juga menganggap ini sebagai bug, semuanya bekerja dengan baik dengan macan tutul salju, tetapi setiap kali komputer saya kembali dari tidur, kata sandi kunci ssh ditanyakan lagi walaupun saya memeriksa "ingat itu" terakhir kali ditanya! Sangat menyebalkan ...
Schmurfy
3

Seharusnya tidak perlu membuat ulang kunci publik Anda. Anda cukup melakukan dua perintah ini:

chmod 0600 ~/.ssh/id_rsa.pub
ssh-add ~/.ssh/id_rsa

Pada dasarnya, Anda perlu memperketat izin pada file kunci publik, dan Anda perlu menambahkan kunci Anda ke agen otentikasi OSX.

rubel
sumber
3

Dalam versi terbaru dari macOS (10.12.2 - Sierra) ini adalah perbaikan yang mudah. Cukup edit ~ / .ssh / config Anda dan aktifkan opsi UseKeychain:

Host *
UseKeychain yes

Simpan dan selesaikan.

Ricardo Mendes
sumber
2

Masalah ini terjadi pada sistem OS X 10.7.4 saya ketika ssh-agent meninggal. Reboot memperbaiki masalah. (Anda dapat mencoba memulai kembali ssh-agent, tetapi saya tidak tahu apakah Keychain cukup pintar untuk mengambil soket ssh-agent yang baru.)

Troy J. Farrell
sumber
Ini adalah apa masalah saya diperbaiki juga setelah berkeliling selama satu jam.
DannyRe
2
  1. Pastikan bahwa ~ / .ssh / adalah chmod 700.

  2. Pastikan file ~ / .ssh / id * keduanya chmod 600.

  3. Jalankan / Aplikasi / Utilitas / Keychain Access.app dan perbaiki keychain.

  4. Keluar. (Mem-boot ulang bukan ide yang buruk)

  5. Gabung

  6. Jika masalah berlanjut, pindahkan file ~ / .ssh / id * yang ada ke Desktop dan coba buat kunci baru menggunakan ssh-keygen -t dsa -f ~/.ssh/id_dsa -C [email protected]dan lihat apakah kunci baru berfungsi lebih baik.

Saya menggunakan Lion, tetapi Macan Tutul Salju IIRC bekerja dengan cara yang sama.

ps - siapa pun yang menyarankan menggunakan kata sandi ssh kosong harus dipaksa memakai tanda sehingga orang lain tahu untuk tidak menerima saran dari mereka.

TJ Luoma
sumber
1

Regenerasi kunci publik sepertinya tidak bekerja untuk saya (10.8), juga tidak menghasilkan kunci SSH baru. Jika saya, misalnya, menjalankan git pull setelah mengunci rantai masuk, kotak dialog akan muncul untuk meminta kata sandi ke kunci alih-alih terlebih dahulu mencoba mengambil kata sandi dari gantungan kunci masuk.

Namun, jika saya membunuh ssh-agent terlebih dahulu, saya diminta untuk memasukkan kata sandi gantungan kunci masuk yang kemudian mengambil kata sandi kunci SSH.

blarf
sumber
Hai, ini terlihat seperti pertanyaan terpisah, bukan jawaban untuk pertanyaan ini. Bisakah Anda memposting ulang sebagai pertanyaan baru?
Scot,
1

Temuan menarik lainnya adalah jika Anda menyalin & menempel konten file PEM, Anda mungkin memiliki akhir yang hilang tanda hubung. Jadi ingatlah untuk menambahkan baris terakhir sebagai,

-----END RSA PRIVATE KEY-----
Fang
sumber
Sesuatu yang serupa adalah ketika menempelkan kunci ssh dari sesuatu seperti lastpass, itu menempel semua pada satu baris. Ini sepertinya menjadi masalah bagi saya, dan begitu memisahkan kunci privat pada spasi putih kembali ke format yang benar, itu berhasil.
Cameron Gagnon
1

Saya harus melakukan langkah-langkah berikut untuk membuatnya berfungsi.

# Change working directory
cd ~/.ssh
# Remove the old public key
rm id_rsa.pub
# Create a new public key
ssh-keygen -y -f id_rsa > id_rsa.pub
# Change permission
chmod 600 id_rsa*
# Add the key to ssh
ssh-add id_rsa
# Then finally test it (I used github)
ssh -i id_rsa.pub git@github.com

Perintah terakhir harus menghasilkan sesuatu seperti: Hi <user>! You've successfully authenticated, but GitHub does not provide shell access.

netbrain
sumber
0

Saya memiliki masalah yang sama. Saya sepertinya telah memperbaikinya dengan melakukan ini.

1) Dicadangkan dengan mengganti nama ke file id_dsa dan id_dsa.pub lama.

2) Menjalankan keygen baru dengan frasa sandi kosong.

Bekerja dengan pekerjaan launchctl periode pemantauan server jarak jauh serta masuk dari ssh di terminal.

Saya memiliki fungsi authme fungsi cepat di terminal saya karena saya memiliki yang berikut di .bash_profile saya

#~/.bash_profile    
function authme {
ssh $1 'cat >>.ssh/authorized_keys' <~/.ssh/id_dsa.pub
}

Jadi autotes cepat remoteserver.com akan menyalin kunci jarak jauh baru.

Saya pikir bug ini ada hubungannya dengan frasa sandi yang tidak dikonversi (Macan Tutul Salju saya yang lama tidak memilikinya).

Coba itu dan lihat apakah itu membantu.

Tidak perlu lebih dari 10 menit untuk melakukannya. Saya menghabiskan waktu di Google untuk melihat apakah ada yang menyebutkan hal ini. Situs ini adalah satu-satunya!

Owain.

pengguna9563
sumber
Menggunakan kata sandi kosong bukan pilihan bagi saya, sayangnya
titaniumdecoy
0

Saya punya masalah serupa. Ternyata kunci pribadi yang saya gunakan dalam format yang salah. Saya menggunakan Putty Key Generator pada mesin Win saya dan ssh pada OS X mengharapkan format yang berbeda - Buka format SSH.

Ternyata alat yang saya gunakan untuk membuat kunci ini (Putty Key Generator) memiliki opsi untuk mengubah kunci privat saya ke format yang diperlukan oleh Open SSH.

Sederhana seperti:

  1. Buka PuTTY Key Gen
  2. Muat kunci pribadi Anda
  3. Pilih Konversi> Ekspor kunci OpenSSH.

File yang akan Anda simpan berisi kunci pribadi asli Anda dalam format yang sesuai (OpenSSH).

Greg
sumber
0

Harap pastikan bahwa:

  1. Anda menggunakan format pem untuk kunci pribadi Anda. Ini karena Mac menggunakan openssh client yang berfungsi dengan pem. ppk adalah format milik putty dan tidak kompatibel dengan openssh. Anda dapat dengan mudah mengkonversi ppk ke pem menggunakan dempul keygen, jika Anda hanya memiliki ppk.
  2. Izin pada file pem Anda adalah 600. Kunci pribadi hanya dimaksudkan untuk dapat diakses oleh pemiliknya. Jadi, jika izin memberikan akses baca ke orang lain, itu akan dianggap sebagai ancaman keamanan.

Semoga ini bisa menyelesaikan masalah.

Sasidhar Sekar
sumber
-1

Gunakan kunci .pem daripada kunci .ppk.

Abhi
sumber
1
Kami mencari jawaban panjang yang memberikan penjelasan dan konteks. Jangan hanya memberikan jawaban satu baris; jelaskan mengapa jawaban Anda benar, idealnya dengan kutipan. Jawaban yang tidak termasuk penjelasan dapat dihapus.
Tetsujin