Server terus meminta kata sandi setelah saya menyalin Kunci Publik SSH saya ke otor_keys


44

Saya memiliki Server Ubuntu, berjalan di Cloud. Saya membuat pengguna ( git). Dalam folder itu /home/git, saya telah membuat .ssh/dir, dan authorized_keysfile.

Tetapi, ketika saya memasukkan kunci publik SSH saya ke authorized_keysfile, server terus bertanya kata sandi.

Apa kesalahan yang telah aku perbuat?


Di mana Anda meletakkan ypur publik? di git pengguna atau di root? bagaimana Anda mengaksesnya? sebagai ssh <you> @ <server> o <git> @ <server> atau root @ <server> .. periksa dan tambahkan info lebih lanjut.
maniat1k

Jawaban:


42

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 -vflag (atau -vvatau -vvv) untuk meningkatkan verbositas. Anda mungkin dapat mengidentifikasi masalah Anda dengan cara ini.

Berikut hal-hal lain yang perlu diperiksa.

  • Pastikan /home/git/.ssh/authorized_keysdimiliki oleh git.
  • Pastikan /home/git/.ssh/authorized_keysmemiliki mode 600 ( -rw-------).

Periksa juga /etc/ssh/sshd_configfile tersebut.

  • PubkeyAuthentication harus diatur ke yes
  • Ada juga AuthorizedKeysFilearahan yang menentukan jalur di mana kunci yang berwenang harus berada. Pastikan itu dikomentari atau pada default %h/.ssh/authorized_keys.

Terima kasih! Saya akan mencoba opsi ini dan kembali lagi nanti untuk mendapat tanggapan!
Luis Dalmolin

Apa yang Anda lakukan jika Anda tidak melihat /var/log/auth.logfile? Apakah ada cara untuk mengaktifkannya?
Steve Robbins

1
Log mungkin ada di / var / log / secure jika Anda tidak memiliki /var/log/auth.log
CoverosGene

Kesalahan konyol, saya telah scp-ed file .pub ke dalam folder .ssh di server yang ingin saya sambungkan. Pastikan untuk memindahkannya ke folder otor_keys.
CenterOrbit

Saya juga harus menghapus izin menulis grup dari direktori home saya sendiri. Kemudian saya memulai kembali ssh dengansudo service ssh restart
Dylan Pierce

19

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!)


Meskipun ini tentu saja membantu, saya pikir ini lebih merupakan tambahan untuk jawaban xeyes .
gertvdijk

1
Ya Tuhan, terima kasih banyak !. Mata saya menyala karena semua pencarian saya lakukan di google. Akhirnya berhasil !. Terima kasih banyak.
GTRONICK

Man terima kasih! Saya menghabiskan berjam-jam mencari solusi ... dan ini menyelesaikan semua masalah saya.
Afaria

ya. itu dia. senang saya memutuskan untuk membaca jawaban berikutnya
Katushai

Juga periksa di / etc / passwd apa direktori home dari pengguna. Masalah aneh saya adalah itu bukan masalah standar
drodsou

5

Ada beberapa cara untuk menyelesaikan masalah ini: Anda dapat mengonfigurasi sshd(sisi server) atau ssh(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 ke sshperintah:

ssh -o PubkeyAuthentication=yes -o PasswordAuthentication=no -X git@server

Jika ini berhasil, Anda dapat mengatur PasswordAuthentication=noopsi secara permanen di file konfigurasi klien ssh /etc/ssh/ssh_configsistem-lebar atau khusus ~/.ssh/configpengguna (pada detail, lihat man ssh_config).


1
Secara default semua konfigurasi klien SSH ( /etc/ssh/ssh_config) pada sistem Debian / Ubuntu sudah lebih suka PubkeyAuthentication dan coba dulu seperti yang akan Anda lihat ketika menjalankan sshdalam mode verbose.
gertvdijk

3

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:

Host Cloud
    Hostname cloud.theclouds.com
    User git
    IdentityFile ~/.ssh/config/mykey # This is correct

    # IdentityFile ~/.ssh/config/mykey.pub # This is incorrect


1

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.


1
Saya triple memeriksa izin dan 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.
jrhorn424

Pastikan Anda memiliki bit ----- AKHIR RSA PRIVATE ----- juga.
tobych

1

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:

ssh-add path/to/private/key

1

Anda juga dapat menambahkan kunci Anda ke Agen SSH:

u@pc:~$ ssh-agent bash
u@pc:~$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/u/.ssh/id_rsa: # ENTER YOUR PASSWORD
Identity added: /home/u/.ssh/id_rsa (/home/u/.ssh/id_rsa)

0

Bisa juga Anda menelepon

sudo git clone gituser@domain:repo.git

di mana kunci ssh pengguna root belum ditambahkan ke authorized_keysofgituser


0

Pada mesin yang menjalankan Ubuntu 18.04.02 LTS saran untuk mengatur izin ~/.sshhingga 600 tidak bekerja untuk saya. Saya harus mengatur izin menjadi 700, dan kemudian semuanya bekerja dengan baik.


0

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.


0

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 user@xx.xx.xx.xx. Saya memecahkan masalah saya dengan menambahkan file konfigurasi dan menentukan identitas yang akan digunakan untuk setiap host seperti berikut:

vi ~/.ssh/config

Add both hostnames and their identity file as follows:

Host server1.nixcraft.com
  IdentityFile ~/Users/.ssh/id_rsa1
Host server2.nixcraft.com
  IdentityFile /backup/home/aymen/.ssh/id_rsa2
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.