SSH masih meminta kata sandi setelah mengatur otentikasi berbasis kunci

10

Saya telah berhasil membuat auth berbasis kunci untuk pengguna root dari mesin A saya ke mesin B.

Sekarang, saya membuat pengguna baru pada mesin B, sama seperti pada mesin A, sebut saja dia USER. Saya membuat dir home untuknya di mesin B /home/USERdan saya ingin membuat kunci berbasis auth untuknya dari mesin A ke mesin B.

Jadi, saya berlari menggunakan mesin

  1. ssh-keygen -t rsa, menerima semua jalur, jadi /home/USER/.ssh/id_rsadan tanpa frasa
  2. ssh-copy-id -i /home/USER/.ssh/id_rsa.pub USER@BmachinesIP, memasukkan kata sandi dan dipijat

Sekarang coba masuk ke mesin bla bla bla

Jadi semuanya tampak baik-baik saja.

Tetapi ketika saya mencoba menghubungkan ssh USER@BmachinesIPsaya diminta kata sandi. Saya mencoba melihat log dan berlari ssh -vvv USER@BmachinesIPdan ini adalah bagian dari output:

debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /home/USER/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/USER/.ssh/id_dsa
debug3: no such identity: /home/USER/.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
USER@BmachinesIP's password:

Jadi, adakah yang bisa memberi tahu saya apa yang telah saya lakukan salah atau apa yang harus saya ubah? Mungkin masalahnya ada di izin, di sini adalah:

pada mesin:

drwx------  2 USER USER    SIZE DATE TIME .ssh
-rw-------  1 USER USER 1675 2011-10-31 14:36 id_rsa
-rw-r--r--  1 USER USER 413 2011-10-31 14:36 id_rsa.pub

dan pada mesin B:

drwx------  2 USER defaultGroup    SIZE DATE TIME .ssh
-rw-------    1 USER defaultGroup    SIZE DATE TIME authorized_keys
tratto
sumber

Jawaban:

13

Saya telah menemukan solusinya. Ada masalah dalam izin.

/home/USER pada mesin jarak jauh diberikan semua izin, tetapi untuk otentikasi berbasis kunci harus diatur ke 755

tratto
sumber
2
Wow. Luar biasa bahwa tidak ada keluaran debug tentang izin meskipun mereka merupakan pusat dari konfigurasi kunci publik yang tepat.
jchook
Wow, kamu benar. Sekarang sudah berfungsi .... meskipun saya benar-benar ingin menjaga izin yang semula (775). Adakah petunjuk tentang cara mengubahnya?
Pablo Olmos de Aguilera C.
Tampaknya tidak mungkin, hanya solusi yang akan menetapkan StrictModes no di sshd_config. : /.
Pablo Olmos de Aguilera C.
2
Pada dasarnya Anda memerlukan izin ini:, chmod o-w ~/; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keyslalu berfungsi. Disalin dari jawaban Maxime R. dari sini: askubuntu.com/questions/54670/passwordless-ssh-not-working
erik
2
Saya telah melakukan semua perubahan izin ini, dan masih meminta saya kata sandi ketika saya ssh. Saya juga telah memverifikasi bahwa kunci pribadi sama pada kedua mesin (Ubuntu). Cukup bingung.
Amalgovinus
2

Masalah yang sama bagi saya menginstal CentOS7 baru.

1. periksa izin dir home dan izin ~ / .ssh dan ~ / .ssh / Authorized_key (sesuai @erik)

chmod o-w ~/; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys

2. centang / etc / ssh / sshd_config pengaturan && layanan sshd restart (setelah setiap pengeditan) Berguna: coba "LogLevel VERBOSE" di sshd_config.

Saya masih mendapatkan prompt kata sandi setelah memeriksa semua yang beres.

Jalankan ssh client dengan log -vvv:

debug3: send_pubkey_test 
debug2: we sent a publickey packet, wait for reply

Log server (/ var / log / secure):

Failed publickey for * from * port * ssh2: RSA *

ssh server tidak mengirim lebih banyak info kesalahan ke klien karena itu akan menjadi risiko keamanan.

Jika saya menjalankan sshd pada port yang berbeda 'sshd -p 5555 -d'. Kuncinya bekerja. Login tanpa kata sandi ok. WTF?

Kemudian saya menonaktifkan selinux (atur SELINUX = nonaktif di / etc / selinux / config) dan reboot. Login tanpa kata sandi kemudian berfungsi dengan baik.

pengaturan sshd_config saya yang aktif saat ini:

[root@hp-bl-05 ~]# grep -vE "^#|^$" /etc/ssh/sshd_config  
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
SyslogFacility AUTHPRIV
LogLevel VERBOSE
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys
HostbasedAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication no
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
UseDNS no
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem   sftp    /usr/libexec/openssh/sftp-server

Jadi alangkah baiknya jika kita dapat mengubah sesuatu yang kecil di selinux untuk mendapatkan login ssh tanpa kata sandi untuk bekerja. Adakah yang bisa memperbaiki jawabannya?

gaoithe
sumber
0

Solusinya tidak menonaktifkan SELinux tetapi untuk memperbaiki izin SELinux dari direktori pengguna. Konteks direktori pengguna harus diatur ke user_home_t.

Untuk memeriksa,

$ sudo ls -Z /home/

Jika konteks untuk direktori pengguna Anda adalah lebih dari itu user_home_t, SELinux tidak akan mengizinkan SSH melalui kunci publik ke direktori pengguna tersebut untuk pengguna tersebut.

Memperbaiki,

$ sudo semanage fcontext -a -t user_home_t /home/azureuser
$ sudo restorecon -vvRF /home/azureuser

Login berbasis kunci sekarang harus berfungsi.

sentifool
sumber