Saya memiliki Server Ubuntu, berjalan di Cloud. Saya membuat pengguna ( git
). Dalam folder itu /home/git
, saya telah membuat .ssh/
dir, dan authorized_keys
file.
Tetapi, ketika saya memasukkan kunci publik SSH saya ke authorized_keys
file, server terus bertanya kata sandi.
Apa kesalahan yang telah aku perbuat?
Jawaban:
Di sisi server, daemon ssh akan mencatat kesalahan
/var/log/auth.log
, jadi periksa file itu untuk melihat apa yang dilaporkan.Dari sisi klien, saat membuat koneksi Anda dapat menambahkan
-v
flag (atau-vv
atau-vvv
) untuk meningkatkan verbositas. Anda mungkin dapat mengidentifikasi masalah Anda dengan cara ini.Berikut hal-hal lain yang perlu diperiksa.
/home/git/.ssh/authorized_keys
dimiliki olehgit
./home/git/.ssh/authorized_keys
memiliki mode 600 (-rw-------
).Periksa juga
/etc/ssh/sshd_config
file tersebut.PubkeyAuthentication
harus diatur keyes
AuthorizedKeysFile
arahan yang menentukan jalur di mana kunci yang berwenang harus berada. Pastikan itu dikomentari atau pada default%h/.ssh/authorized_keys
.sumber
/var/log/auth.log
file? Apakah ada cara untuk mengaktifkannya?sudo service ssh restart
Juga pastikan direktori home pengguna Anda (dalam kasus Anda, / home / git) hanya dapat ditulis oleh Anda. Saya pernah mengalami masalah ini karena direktori home saya dapat ditulis kelompok. /var/log/auth.log mengatakan di dalamnya: "Otentikasi ditolak: kepemilikan buruk atau mode untuk direktori / home / chuck". (ini untuk memastikan itu tidak menggunakan file resmi_keys bahwa orang lain selain Anda telah bermain-main dengan!)
sumber
Ada beberapa cara untuk menyelesaikan masalah ini: Anda dapat mengonfigurasi
sshd
(sisi server) ataussh
(sisi klien) untuk tidak menggunakan otentikasi kata sandi. Menonaktifkan otentikasi kata sandi di server membuat server Anda lebih aman, tetapi Anda akan mendapat masalah jika kehilangan kunci.Untuk membuat
ssh
(sisi klien) menggunakan otentikasi pubkey, tambahkan beberapa opsi kessh
perintah:Jika ini berhasil, Anda dapat mengatur
PasswordAuthentication=no
opsi secara permanen di file konfigurasi klien ssh/etc/ssh/ssh_config
sistem-lebar atau khusus~/.ssh/config
pengguna (pada detail, lihatman ssh_config
).sumber
/etc/ssh/ssh_config
) pada sistem Debian / Ubuntu sudah lebih sukaPubkeyAuthentication
dan coba dulu seperti yang akan Anda lihat ketika menjalankanssh
dalam mode verbose.Apakah Anda menggunakan ~ / .ssh / config di mesin lokal Anda? Saya mengalami masalah ini ketika saya menggunakan direktif IdentityFile dalam file konfigurasi dan arahkan ke kunci publik. Sebagai contoh:
sumber
Jika folder rumah Anda dienkripsi maka
authorized_keys
file Anda tidak dapat dibaca sebelum login. Anda harus memindahkannya ke luar rumah.Di sini dijelaskan dan bagaimana caranya: https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Troubleshooting
sumber
Hal lain yang perlu diperiksa adalah apakah ada pengembalian carriage tambahan di kunci publik Anda. Saya mengikuti saran di atas untuk meninjau /var/log/auth.log dan melihat kesalahan saat membaca kunci. Kuncinya sekitar dua baris, bukan empat. Ada pengembalian carriage tambahan yang tertanam di kunci.
Saat menggunakan editor vi, gunakan shift-j untuk bergabung dengan garis dan menghapus ruang ekstra di string kunci.
sumber
sshd_config
. Membenturkan kepalaku ke dinding selama setengah jam. Ini kesalahan saya! Entah bagaimana, saya sudah terbiasa mengakhiri semua file yang saya sunting dengan linebreak tambahan. Bahkan dengan satu kunci dan carriage return di akhir , itu sudah cukup untuk mengacaukan otorisasi.Jika Anda memiliki beberapa kunci pribadi, gunakan sakelar -v pada perintah koneksi ssh Anda untuk memeriksa untuk melihat apakah kunci primer Anda sedang uesd untuk mencoba menghubungkan. Jika tidak, beri tahu klien ssh untuk menggunakannya dengan perintah berikut:
sumber
Anda juga dapat menambahkan kunci Anda ke Agen SSH:
sumber
Bisa juga Anda menelepon
sudo git clone gituser@domain:repo.git
di mana kunci ssh pengguna root belum ditambahkan ke
authorized_keys
ofgituser
sumber
Pada mesin yang menjalankan Ubuntu 18.04.02 LTS saran untuk mengatur izin
~/.ssh
hingga 600 tidak bekerja untuk saya. Saya harus mengatur izin menjadi 700, dan kemudian semuanya bekerja dengan baik.sumber
Saya memiliki izin .ssh / direktori dan otor_keys file saya benar tetapi mengalami masalah "prompt untuk kata sandi" ini karena masalah yang berbeda, yang disebabkan sendiri.
Saya telah menggunakan highlight berbasis mouse dan salin / tempel untuk menyalin info dari id_rsa.pub lokal saya ke dalam file Authorized_key di server. Ini berhasil menyalin data sebagai satu baris, tetapi ada tempat di mana spasi yang tidak diinginkan di ujung garis yang terlihat sulit dilihat saat mengedit file dengan vi. Setelah saya menghapus ruang yang tidak diinginkan ini saya bisa ssh dengan baik.
sumber
Jadi yang terjadi pada saya adalah saya memiliki 2 VM untuk diakses dari mesin lokal saya (2 kunci id_rsa.pub dan id_rsa2.pub). Saya menyadari bahwa koneksi ssh saya menggunakan id_rsa.pub secara default untuk koneksi ssh [email protected]. Saya memecahkan masalah saya dengan menambahkan file konfigurasi dan menentukan identitas yang akan digunakan untuk setiap host seperti berikut:
sumber