Kunci SSH meminta saya untuk frasa sandi?

35

Saya memiliki pasangan kunci publik / pribadi. Tak satu pun dari mereka memiliki jenis frasa sandi yang terkait dengan mereka.

Setiap kali saya mencoba ssh menggunakan privat atau publik (dan saya cukup yakin saya seharusnya hanya menggunakan kunci publik), saya ditanyai frasa sandi, dan tentu saja tidak dapat terhubung.

Adakah yang tahu cara menyiasatinya? Apakah saya mengetik beberapa perintah secara tidak benar? Saya mencoba ssh ke server yang saya setup di file ~ / .ssh / config saya (dengan benar, karena setup yang sama persis ini bekerja di server lain) dengan kunci yang disimpan dalam ~ / .ec2 / key.ppk

Saya juga mencoba menggunakan puttygen.exe untuk menghasilkan kunci pribadi baru DENGAN frasa sandi, dan kemudian menggunakan kunci itu, dan ketika saya mengetikkan frasa sandi, masih gagal.

Llaskin
sumber

Jawaban:

28

Pertama adalah kunci pribadi yang akan memiliki frase sandi. Ini memvalidasi terhadap kunci publik yang disimpan di server jarak jauh.

Tebakan terbaik adalah Anda mencoba menggunakan format kunci privat putty ( ppk) dengan openssh ini tidak berfungsi .... PuTTYgen memiliki opsi ekspor untuk openssh jika ini masalahnya.

ssh-rsa AAAAB3NzaC1y...... etc

Saya juga berasumsi bahwa server yang Anda coba ssh memiliki kunci publik Anda disimpan dengan benar dalam file kunci yang diotorisasi (secara ~/.ssh/authorized_keysumum).

Tebakan lain adalah kunci yang benar tidak dipilih. Beberapa hal yang akan saya coba adalah:

Menyetel ulang kunci menggunakan frase ssh-keygen, seperti ini ...

$ ssh-keygen -f ~/.ec2/key.ppk -p

Ini akan mengkonfirmasi jika sebenarnya kunci Anda sudah (atau tidak) memiliki pass-phrase di atasnya.

Kedua saya akan mencoba menghubungkan menggunakan output verbose, menentukan kunci publik Anda secara eksplisit menghasilkan:

$ ssh host -i ~/.ec2/key.ppk -vvv

Ini akan memberi Anda lebih banyak ide tentang apa yang sedang terjadi.

mrverrall
sumber
Benar, ini adalah kunci yang dihasilkan oleh puttygen dari kunci yang berfungsi di dempul. Ketika saya putty ke server yang sama (dari mesin yang menjadi tuan rumah contoh cygwin) itu berfungsi baik dengan kunci yang sama persis. Ketika saya mencoba untuk terhubung melalui ssh dari cygwin, itu meledak. Saya bingung bagaimana cara membuatnya.
Llaskin
6
Saya pikir poin mrverrall adalah bahwa format file untuk kunci privat Putty tidak sama dengan format file yang digunakan untuk OpenSSH (klien ssh di cygwin). Jadi OpenSSH gagal menggunakan data kunci privat karena tidak dapat mengetahui apa artinya data tersebut. Namun Putty memiliki opsi "ekspor", sehingga Anda bisa mendapatkan data dalam format "PEM" yang diperlukan.
Phil P
Kesalahan ini juga diberikan jika file dalam format yang benar - jadi periksa dua kali dan tiga kali Anda menyalin dan menempel dengan benar jika membuatnya secara manual.
Daniel Sokolowski
Apakah ssh-rsa AAAAB3NzaC1y...... etcformat dari openssh, kan? Saya memiliki format ini di kunci pribadi saya. Header menyatakan: PuTTY-User-Key-File-2: ssh-rsa Encryption: none Comment: imported-openssh-key Public-Lines: 6Tetapi file tersebut disimpan sebagai file id_rsa. Apakah ini berarti bahwa ini masih dalam format .ppk, meskipun nama file tersebut hanyaid_rsa
alpha_989
Temukan jawabannya untuk berbagai format di sini. Dalam kasus saya meskipun ekstensi file tidak memiliki .ppk, itu masih dalam format dempul, yang membingungkan saya, karena itu menunjukkan semua jenis kesalahan, tetapi tidak memberi saya petunjuk langsung bahwa masalahnya adalah dengan format kunci. : stackoverflow.com/a/44391850/4752883
alpha_989
18

Anda bisa menjalankan ssh-agent. Lihat di sini untuk diskusi.

Versi singkat yang bekerja untuk saya (dalam bash):

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-rnRLi11880/agent.11880; export SSH_AUTH_SOCK;
SSH_AGENT_PID=11881; export SSH_AGENT_PID;
echo Agent pid 11881;

Saya mengambil 3 baris yang ditampilkannya, dan mengeksekusinya. Cara lain untuk melakukannya adalah mengambil output -s:

$ eval `ssh-agent -s`

Lalu saya menambahkan kredensial saya ke dalamnya:

$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/me/.ssh/id_rsa: 
Identity added: /home/me/.ssh/id_rsa (/home/me/.ssh/id_rsa)

Sekarang agen memasok kredensial alih-alih saya harus mengetikkan frasa sandi saya.

Saya percaya ssh-agent hilang ketika shell melakukannya, jadi ini harus ditulis pada saat startup untuk kenyamanan maksimal. The Link saya berbagi menggambarkan scripting juga.

makan siang
sumber
4

Ketika Anda mengatur kunci publik Anda, Anda mungkin (mungkin tidak sengaja) mengaturnya dengan frasa sandi.

Anda mungkin perlu memulai baru - saya belum menggunakan puttygen, tetapi Anda dapat menghapus (atau mengganti nama) kunci publik di direktori .ssh Anda, gunakan ssh-keygenuntuk membuat yang baru (pastikan tidak memberikan kata sandi), lalu bagikan public_key ke file otor_keys di server yang Anda coba sambungkan.

Anda mungkin perlu juga menghapus kunci-frasa sandi lama dari file kunci-resmi di server yang Anda sambungkan.

JohnMcG
sumber
4

Pastikan kunci pribadi id_rsatidak memiliki jeda baris tambahan pada akhirnya, dalam beberapa kasus jeda baris tambahan akan membuat ssh-keygen untuk meminta frasa sandi, coba ini:

sed  '/^$/d' /path/to/key > id_rsa

uji:

ssh-keygen -yf id_rsa
nbari
sumber
2
OMG ini masalah saya. baris baru tambahan setelah -----END RSA PRIVATE KEY-----menyebabkannya meminta kata sandi pada kunci yang tidak memiliki satu set!
edk750
3

Satu hal yang perlu diperiksa, jika file sshd_config Anda memiliki StrictModes = yes, maka direktori $ HOME atau direktori $ HOME / .ssh tidak boleh ditulis oleh grup atau yang lainnya. Kalau tidak, otentikasi gagal apa pun yang terjadi.

TD1
sumber
1

Saya membuat kesalahan dengan tidak sengaja menimpa file ~ / .ssh / id_rsa saya dengan ~ / .ssh / id_rsa.pub saya. Melakukan hal itu akan menyebabkan ssh meminta frasa sandi.

Kriket Merah
sumber
0

Saya mengalami masalah ini beberapa hari yang lalu. Secara khusus, saya mencoba untuk menyalin / menempelkan kunci AWS pribadi dari satu mesin ke yang lain.

Saya memiliki kebiasaan buruk baik kehilangan karakter pertama atau terakhir. Ternyata jika Anda tidak mengambil setiap tanda hubung di akhir kunci pribadi Anda - meskipun itu tidak ada hubungannya dengan teks kunci itu sendiri - Anda akan diminta untuk frasa sandi untuk kunci pribadi hingga menambahkan setiap karakter dari kunci yang Anda salin dari (dalam kasus saya ini berarti menambahkan tanda hubung tunggal ke akhir kunci.)

Saya kira ini berarti bahwa praktik terbaik adalah SSH file teks di kawat daripada mencoba untuk menyalin dan menempel di antara jendela Terminal.

Profesor Tom
sumber
0

Di OSX saya bisa menjalankan:

$ ssh-add ~/.ssh/id_rsa Enter passphrase for /Users/me/.ssh/id_rsa: `Identity added: /Users/mikekilmer/.ssh/id_rsa (/Users/mikekilmer/.ssh/id_rsa)

Kata sandi disimpan oleh aplikasi Keychain Access, yang ada di folder Applications> Utilities. Saya baru saja masuk id_di kolom pencarian.

MikeiLL
sumber
0

Coba lihat file log di server. Lihat / var / log / auth log (mis., / Var / log / authlog untuk OpenSSH, walaupun saya telah melihat beberapa sistem operasi menggunakan Portable OpenSSH dan menggunakan /var/log/auth.log) dan periksa akhir file itu.

Penyebab paling umum yang saya lihat adalah izin yang salah (seperti yang dicatat oleh jawaban TD1 ), meskipun masalah lain mungkin dengan kunci publik (disimpan di server) tidak berada di file yang benar, atau kunci yang dikomentari, atau nama pengguna salah eja.

Mungkin juga bermanfaat (untuk pemecahan masalah) untuk memberikan frasa sandi akun sementara, hanya untuk memverifikasi bahwa akun tersebut dapat berhasil masuk saat Anda melakukannya.

Jika melihat file log tidak dengan cepat membawa Anda ke resolusi, saya sarankan memposting pertanyaan baru (karena ini adalah pertanyaan umum yang hebat) yang memang menyertakan rincian spesifik dari file log, sehingga arahan yang lebih spesifik dapat diberikan.

TOOGAM
sumber
0

Di tim saya, ketika ini terjadi itu bukan masalah dengan apa pun secara lokal. Kunci ssh dan / atau akses pengguna belum dikonfigurasikan dengan benar di server yang disambungkan (dalam hal ini platform hosting kami). Untuk beberapa alasan ini memicu prompt untuk kunci ssh tidak ada.

ognockocaten
sumber