ssh-copy-id tidak berfungsi

19

Saya mencoba menyiapkan login SSH tanpa kata sandi di CentOS 5.4:

  1. Saya membuat kunci publik RSA pada klien.
  2. ssh-copy-id dari klien ke server.
  3. Kunci ~ / .ssh / authorized_key terverifikasi berisi kunci klien.

Klien masih meminta kata sandi. Apa yang saya lewatkan?

Terima kasih.

EDIT: memeriksa ssh_config dan izin seperti yang disarankan. Ini adalah info debug dari klien:

debug2: key: /home/saguna/.ssh/identity ((nil))
debug2: key: /home/saguna/.ssh/id_rsa (0x2b31921be9a0)
debug2: key: /home/saguna/.ssh/id_dsa ((nil))
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup gssapi-with-mic
debug3: remaining preferred: publickey,keyboard-interactive,password
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic
debug3: Trying to reverse map address 192.168.1.75.
debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug2: we did not send a packet, disable method
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/saguna/.ssh/identity
debug3: no such identity: /home/saguna/.ssh/identity
debug1: Offering public key: /home/saguna/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug1: Trying private key: /home/saguna/.ssh/id_dsa
debug3: no such identity: /home/saguna/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
[email protected]'s password: 
jackhab
sumber
Saya mendapatkan ini juga :(
Matt Joiner

Jawaban:

19

9/10 kali itu karena ~ / .ssh / official_keys tidak berada pada mode yang benar.

chmod 600 ~/.ssh/authorized_keys
JustinShoffstall
sumber
2
FYI, saya membuat skrip kecil di github.com/centic9/generate-and-send-ssh-key yang menjalankan langkah-langkah yang diperlukan sekaligus dan juga memastikan semua izin file / direktori yang selalu membuat saya sakit kepala ...
centic
5
Jika ini tidak berhasil untuk seseorang, Anda juga harus melihat jawaban @ Gilles. Secara khusus, home dan~/.ssh direktori tidak dapat ditulis oleh siapa pun selain pengguna.
ostrokach
Saya tahu ini sudah tua, tapi terima kasih banyak untuk @ centic. Saya yakin izin saya benar tetapi tidak pernah repot untuk memeriksa $ HOME dan .ssh / direktori.
jdferreira
Bekerja untukku. Terima kasih!
Ivan Kovtun
12

Periksa / etc / ssh / sshd_config untuk mengizinkan otentikasi dengan kunci. Anda harus memiliki sesuatu seperti ini di dalamnya, dan pastikan garis tidak dikomentari:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys

PS: jangan lupa untuk me-restart sshd setelah Anda memodifikasi file (/etc/init.d/sshd restart)

Patkos Csaba
sumber
Selain jawaban Patkos Csaba, periksa izin folder lokal dan jauh ~ / .ssh Anda.
Dalam kasus saya, AuthorizedKeysFileberkomentar dan saya juga harus menggunakan jalur absolut untuk authorized_keys.
Andrew
Saya mendapatkan 'Tidak dapat membuka koneksi ke agen otentikasi Anda.' ketika mencoba ssh-add
Manticore
ini harus menjadi jawaban yang dipilih
Francisco Tapia
Mungkin Anda tidak mengerti komentarnya. Baris yang dikomentari menunjukkan kepada Anda nilai default. Anda tidak perlu membatalkan komentar jika Anda menginginkan nilai default. Anda hanya perlu membatalkan komentar properti jika ingin mengganti nilai default.
clearlight
5

Saya menemukan bahwa dengan sistem saya masalahnya adalah direktori pengguna (/ home / nama pengguna) dilengkapi dengan perizinan yang salah. Itu drwxr-x-w-dan itu perlu drwxr-xr-x(dengan izin tertulis hanya untuk pemilik). Solusinya adalah menggunakan chmod:

sudo chmod 0755 /home/username
Charlie
sumber
1
Yah! Bekerja untukku. ssh memberi saya kata sandi prompt karena saya merusak pengajuan.
clearlight
4

Saya bukan ahli di sini, tetapi menemukan masalah seperti itu juga, berikut adalah dua sen saya di samping semua saran lainnya.

Terkadang ssh-copy-idmenyalin kunci yang salah ke server jarak jauh (dapat terjadi jika Anda memiliki beberapa kunci dan / atau menggunakan nama-nama yang tidak standar untuk file kunci) atau agen otentikasi Anda salah konfigurasi.

Berikut kutipan dari halaman manual :

Jika opsi -i diberikan maka file identitas (default ke ~ / .ssh / id_rsa.pub) digunakan, terlepas dari apakah ada kunci di ssh-agent Anda. Jika tidak, jika ini: ssh-add -L memberikan output apa pun, ia menggunakan itu sebagai preferensi untuk file identitas.

Jadi pada dasarnya Anda ingin memeriksa itu:

  • Agen otentikasi sistem Anda (biasanya ssh-agent) melihat kunci yang ingin Anda gunakan (periksa ssh-add -Loutput)
    • Jika Anda tidak melihat kunci yang diinginkan, tambahkan menggunakan ssh-add
  • The ssh-copy-iddisalin kunci yang sama untuk mesin remote (hanya login ke remote server menggunakan password dan memeriksa isi ~/.ssh/authorized_keys)
    • Jika Anda tidak melihat kunci yang diinginkan pada server jarak jauh, Anda dapat secara implisit memberi tahu ssh-copy-idkunci mana yang akan disalin:ssh-copy-id -i ~/.ssh/some_public_key

Semoga itu bisa membantu.

Dmitry Pashkevich
sumber
1
Kamu berhasil! Menggali masalah saya ssh-copy-id adalah :, DEFAULT_PUB_ID_FILE=$(ls -t ${HOME}/.ssh/id*.pub 2>/dev/null | grep -v -- '-cert.pub$' | head -n 1)yang akan default ke kunci pertama alfabet - dalam kasus saya saya punya id_boot2docker.pub(yang tampaknya nama default untuk hal - hal ssh boot2docker). Sepertinya ada banyak implementasi ssh-copy-id yang berbeda di sekitar; milik saya berasal brew install ssh-copy-id, yang pada gilirannya diambil dari openssh-portable. Halaman manual saya secara eksplisit menyebutkan perilaku ini ...
Christian Ulbrich
3

Masalah yang paling umum adalah izin yang tidak valid di sisi server. Periksa bahwa tidak ada direktori home Anda, ~/.sshdan ~/.ssh/authorized_keysdapat ditulis oleh siapa pun kecuali Anda (khususnya mereka tidak boleh ditulis kelompok).

Jika bukan itu masalahnya, jalankan ssh -vvv serverdan lihat pandangan klien tentang percakapan. Khususnya, periksa apakah klien mencoba kunci dengan server.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Terima kasih!!! Saya tidak mengerti mengapa, tapi direktori home Anda , ~/.sshdan ~/.ssh/authorized_keystidak bisa ditulisi oleh siapa saja tetapi Anda.
ostrokach
2

Selain semua hal di atas, kita selalu dapat memeriksa file log sshd:

/var/log/auth.log
Omer Dagan
sumber
1

Saya mencoba perbaikan lain tetapi menemukan bahwa saya harus mengubah direktori home agar tidak dapat ditulis oleh orang lain. Direktori rumah adalah 777. Saya mengubahnya ke 755 dan berhasil.

Dulcana
sumber
1
selamat datang @ Dulcana, ia mencoba untuk mengatur login ssh passwrodless, bagaimana mengubah izin menjadi 755 dapat membantu menyelesaikan masalah?
Francisco Tapia
@FranciscoTapia itu karena sshd memastikan bahwa pengguna lain tidak dapat dengan jahat membuat file Authorized_key, menolak login dengan kunci ssh di mana grup atau yang lain dapat menulis file atau orang tua mereka. Jawaban lain juga menyebutkan ini.
Ángel
0

dalam kasus saya / etc / ssh / sshd_config berisi param berikut:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys2

Tapi ssh-copy-id membuat file dengan nama Authorized_keys, jadi saya harus memodifikasi entri ke nama baru. info lebih lanjut tentang otor_keys2 usang

laplasz
sumber
0

Sebagai pelengkap jawaban Omer Dagan untuk CentOS 7 yang lebih baru, gunakan:

journalctl -f -u sshd

untuk melihat log sshd di server.

david.perez
sumber
-1

Masalahnya adalah saya mengalami RSAAuthentication di / etc / ssh / ssh_config

jackhab
sumber