kunci publik selalu meminta kata sandi dan frasa sandi

19

Saya mencoba SSH dari NAS ke server web menggunakan kunci publik. Pengguna NAS adalah 'root' dan pengguna server web 'cadangan'

Saya memiliki semua izin yang ditetapkan dengan benar dan ketika saya men-debug koneksi SSH saya dapatkan: (sedikit terakhir dari debug)

debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /root/.ssh/id_dsa.pub
debug1: Server accepts key: pkalg ssh-dss blen 433
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase for key '/root/.ssh/id_dsa.pub':

Saya menggunakan perintah:

ssh -v -i /root/.ssh/id_dsa.pub [email protected]

Fakta bahwa ia meminta kata sandi adalah pertanda baik tentu saja, tetapi saya tidak ingin itu meminta ini atau kata sandi (yang muncul setelahnya jika saya menekan 'kembali' pada frasa sandi)

Andrew Atkinson
sumber

Jawaban:

24

Itu karena kunci pribadi Anda dienkripsi ...

Anda dapat menambahkan kunci Anda ke agen ssh menggunakan ssh-addatau menghapus frasa sandi (dan dengan itu enkripsi) dari kunci menggunakan perintah berikut:

ssh-keygen -p -f /root/.ssh/id_dsa -N ''


EDIT

Oh, saya baru sadar bahwa Anda mencoba menggunakan kunci publik untuk mengautentikasi ... Anda ingin menggunakan kunci pribadi di sana:

ssh -v -i /root/.ssh/id_dsa [email protected]

Dan hanya untuk memastikan, konten file id_dsa.pubmasuk ke ~backup/.ssh/authorized_keysserver web. Anda dapat menggunakan perintah berikut untuk melakukannya secara otomatis

ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
andrekeller
sumber
masih mendapatkan masalah. Itu berhasil dan memberi saya 'identifikasi Anda telah disimpan dengan frasa sandi baru'. tetapi kemudian masih meminta kata sandi saat saya mencoba dan masuk berikutnya. Saya tidak yakin harus mencoba apa lagi ...
Andrew Atkinson
periksa jawaban saya yang diperbarui ... mungkin itu membantu ...
andrekeller
terima kasih, sepertinya saya mungkin mencoba membandingkan kunci publik dengan kunci publik ... Saya tidak perlu menghapus frasa sandi
Andrew Atkinson
Fakta bahwa saya menggunakan pub saya untuk mengotentikasi (kesalahan bodoh) adalah masalahnya. Terima kasih!
Qix
6

Ini terjadi pada saya ketika kunci pribadi saya tidak dalam format OpenSSH.

Saya awalnya membuat kunci saya di windows menggunakan PuttyGen dan semakin terpental dengan hal yang sama ini.

Saya dapat memperbaikinya dengan memuat kunci di PuttyGen dan mengklik "Konversi" untuk mendapatkannya ke format OpenSSH.

Lokal
sumber
2

Ada beberapa hal.

Terutama, jika KEY meminta kata sandi, kunci dibuat dengan itu. Kedua, jika sistem meminta kata sandi setelahnya, maka kunci tersebut tidak diautentikasi. Artinya, Anda perlu membuat ulang kunci SSH Anda (atau mengubahnya seperti yang disarankan oleh @rbtux) dan memperbaiki file yang diotorisasi.

ssh-keygen -t {dsa | rsa} -b {1024 | 2048 | 4096} -C "komentar opsional" -f id_examplekey

Item dalam kurung keriting adalah opsi, jenis dan ukuran bit (Untuk menyatakan yang jelas: dsa> rsa, 4096> 1024 - dalam hal "keamanan").

Maka Anda perlu menambahkan kunci publik (.pub) ke file authorized_keysdan authorized_keys2(itu adalah kesalahpahaman umum untuk mengatakan .pub adalah untuk penggunaan lokal, namun ini dimaksudkan untuk dibandingkan dengan) Jadi di .sshfolder server .

$ cat id_examplekey.pub >> otor_keys {, 2}

Kemudian di akhir Anda, Anda harus memastikan izin kunci chmod 600 id_exampledan untuk mengurangi mengetik semua itu, Anda dapat mengatur file konfigurasi: ~/.ssh/configpada kotak lokal Anda (itu adalah kerangka, Anda dapat menyesuaikan ini satu ton):

Host example.com
    User WHATEVERNAME
    IdentityFile ~/.ssh/id_examplekey
nerdwaller
sumber
tetapi bagian dalam debug yang berbunyi: debug1: Server menerima kunci: pkalg ssh-dss blen 433 apakah ini tidak berarti bahwa kunci telah diterima? Saya telah menciptakan kembali tanpa frasa sandi, masih sama? - Saya kehabisan ide? Terima kasih
Andrew Atkinson
@AndrewAtkinson Sepertinya Anda mendapatkannya di bawah. Anda memerlukan kunci pribadi di mesin dari (lokal, klien, apa pun) dan kunci public.pub ditambahkan ke file berwenang_keys. Saran saya yang lain akan membantu menghemat waktu Anda: D Semoga berhasil!
nerdwaller
Anda menulis "Terutama, jika KUNCI itu meminta kata sandi, kuncinya dihasilkan dengan itu." <- yeah meskipun saya baru saja menguji apa yang dilakukan penanya, jadi, melakukan -i dengan kunci publik $ ssh user@comp -i ~/.ssh/id_rsa.pubdan katanya salah izin dan pribadi kunci akan diabaikan .. jadi saya mengubah izin menjadi 600 seperti id_rsa, dan meminta frasa sandi. Jadi, memang, kemudian akan meminta kata sandi jika Anda menentukan kunci publik, meskipun kunci publik dan kunci pribadi tidak dihasilkan dengan kata sandi
barlop
2

Bagi saya karena kunci itu sendiri dienkripsi, saya mengikuti langkah-langkah berikut:

  • Mulai ssh-agent: $ ssh-agent bash
  • Tambahkan kunci identitas standar ke manajer kunci: $ ssh-add
  • Jika Anda ingin menambahkan kunci yang berbeda, maka: $ ssh-add /location/of/key

Untuk memeriksa kapan saja, daftar kunci yang saat ini dimuat:

$ ssh-add -l

Rincian lebih lanjut dapat diperoleh dari tautan ini

Sibi
sumber
1

coba https://wiki.gentoo.org/wiki/Keychain

Ini semacam bungkus ssh-agentdanssh-add

Pro: Tidak perlu memasukkan kata sandi berulang kali selama Anda tidak me-reboot. Dapat digunakan di crontab.

Mungkin bisa membantu.

Gon
sumber
1

Mungkin karena Anda menggunakan pubkey DSA yang dinonaktifkan secara default di OpenSSH v7.

Jika Anda tidak dapat mengubah pasangan kunci, kemungkinan solusinya adalah memberi tahu daemon SSH Anda di webserver.com untuk menerima tipe-tipe kunci tersebut, dengan memperbarui /etc/ssh/sshd_configatau setara dengan menambahkan baris berikut

PubkeyAcceptedKeyTypes=+ssh-dss

Dan kemudian memulai kembali layanan

/etc/init.d/ssh restart                     # or equivalent
mosh442
sumber
0

Pada Mac OSX Anda dapat menambahkan kunci pribadi ke gantungan kunci menggunakan perintah:

ssh-add -K /path/to/private_key

Jika kunci pribadi Anda disimpan di ~ / .ssh dan diberi nama id_rsa:

ssh-add -K ~/.ssh/id_rsa

Anda kemudian akan diminta kata sandi, yang akan disimpan di gantungan kunci Anda.

Groot
sumber
Apa yang harus saya lakukan pada klien Linux jika klien Mac berfungsi?
bbaassssiiee