SSH ยังคงถามหารหัสผ่านหลังจากตั้งค่าการตรวจสอบตามคีย์


10

ฉันสร้างรหัสรับรองความถูกต้องสำหรับผู้ใช้รูทจากเครื่อง A ของฉันไปยังเครื่อง B ของฉันได้สำเร็จ

ตอนนี้ฉันสร้างผู้ใช้ใหม่บนเครื่อง B เช่นเดียวกับบนเครื่อง A ลองเรียกเขาUSERดู ฉันสร้าง dir บ้านสำหรับเขาในเครื่อง B /home/USERและฉันต้องการสร้าง auth ตามคีย์สำหรับเขาจากเครื่อง A ถึง B

ดังนั้นฉันจึงวิ่งบนเครื่อง A

  1. ssh-keygen -t rsaยอมรับทุกเส้นทางดังนั้น/home/USER/.ssh/id_rsaและไม่มีวลี
  2. ssh-copy-id -i /home/USER/.ssh/id_rsa.pub USER@BmachinesIPใส่รหัสผ่านและรับการนวด

ตอนนี้ให้ลองเข้าสู่เครื่อง bla bla bla

ดังนั้นทุกอย่างดูเหมือนจะโอเค

แต่เมื่อฉันพยายามเชื่อมต่อssh USER@BmachinesIPฉันถูกขอรหัสผ่าน ฉันพยายามดูบันทึกและวิ่งssh -vvv USER@BmachinesIPและนี่เป็นส่วนหนึ่งของผลลัพธ์:

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:

ดังนั้นทุกคนสามารถบอกสิ่งที่ฉันทำผิดหรือสิ่งที่ฉันควรเปลี่ยน? บางทีปัญหาอยู่ในการอนุญาตนี่คือ:

บนเครื่อง:

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

และในเครื่อง B:

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

คำตอบ:


13

ฉันพบวิธีแก้ปัญหาแล้ว มีปัญหาในการอนุญาต

/home/USER บนเครื่องระยะไกลได้รับการอนุญาตทั้งหมด แต่สำหรับการรับรองความถูกต้องด้วยคีย์จะต้องตั้งค่าเป็น 755


2
ว้าว. น่าอัศจรรย์ที่ไม่มีผลลัพธ์การดีบักเป็นศูนย์เกี่ยวกับสิทธิ์แม้ว่าจะเป็นศูนย์กลางของการกำหนดค่าพับลิกคีย์ที่เหมาะสม
jchook

ว้าวคุณพูดถูก ตอนนี้มันใช้งานได้แล้ว .... แม้ว่าฉันจะต้องการอนุญาตตามเดิม (775) เบาะแสใด ๆ เกี่ยวกับวิธีการเปลี่ยนแปลงที่?
Pablo Olmos de Aguilera C.

ดูเหมือนว่าไม่มีวิธีใดวิธีแก้ปัญหาเท่านั้นที่จะตั้งค่า StrictModes no ใน sshd_config : /
Pablo Olmos de Aguilera C.

2
เป็นหลักคุณต้องได้รับอนุญาตเหล่านี้chmod o-w ~/; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keysแล้วก็ใช้งานได้ คัดลอกมาจากคำตอบของ Maxime R. จากที่นี่: askubuntu.com/questions/54670/passwordless-ssh-not-working
erik

2
ฉันได้ทำการเปลี่ยนแปลงการอนุญาตทั้งหมดแล้วและมันยังขอรหัสผ่านเมื่อฉันยังอยู่ ฉันได้ตรวจสอบแล้วว่าไพรเวตคีย์เหมือนกันในทั้งสองเครื่อง (Ubuntu) งงงวย
Amalgovinus

2

ปัญหาเดียวกันสำหรับฉันติดตั้ง CentOS7 สด

1. ตรวจสอบสิทธิ์ dir ที่บ้านและการอนุญาต ~ / .ssh และ ~ / .ssh / authorized_keys (ตาม @erik)

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

2. ตรวจสอบ / etc / ssh / sshd_configการตั้งค่า && บริการ sshd รีสตาร์ท (หลังจากแก้ไขแต่ละครั้ง) มีประโยชน์: ลอง "LogLevel VERBOSE" ใน sshd_config

ฉันยังได้รับพรอมต์รหัสผ่านหลังจากตรวจสอบทั้งหมดว่าใช้ได้

เรียกใช้ไคลเอ็นต์ ssh ด้วยบันทึก -vvv:

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

บันทึกของเซิร์ฟเวอร์ (/ var / log / ปลอดภัย):

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

เซิร์ฟเวอร์ ssh ไม่ส่งข้อมูลข้อผิดพลาดเพิ่มเติมไปยังไคลเอนต์เนื่องจากอาจมีความเสี่ยงด้านความปลอดภัย

หากฉันใช้ sshd บนพอร์ตอื่น 'sshd -p 5555 -d' กุญแจสำคัญในการทำงาน รหัสผ่านเข้าสู่ระบบไม่มีรหัสผ่าน ok WTF?

จากนั้นฉันปิดใช้งาน selinux (ตั้งค่า SELINUX = ปิดใช้งานใน / etc / selinux / config) และรีบูต การเข้าสู่ระบบด้วยรหัสผ่านนั้นใช้งานได้ดี

การทำงานปัจจุบันของฉันการตั้งค่า sshd_config:

[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

ดังนั้นจึงเป็นการดีที่ได้ทราบว่าเราสามารถเปลี่ยนสิ่งเล็ก ๆ ใน selinux เพื่อรับรหัสผ่าน ssh แบบไม่มีรหัสผ่านเพื่อทำงาน ทุกคนสามารถปรับปรุงคำตอบได้ไหม


0

โซลูชันไม่ได้ปิดใช้งาน SELinux แต่เพื่อแก้ไขสิทธิ์ SELinux ของไดเรกทอรีผู้ใช้ user_home_tบริบทไดเรกทอรีของผู้ใช้จะต้องตั้งค่า

เพื่อตรวจสอบ,

$ sudo ls -Z /home/

หากบริบทสำหรับไดเรกทอรีผู้ใช้ของคุณคืออะไรuser_home_tSELinux จะไม่อนุญาตให้ SSH ผ่านกุญแจสาธารณะในไดเรกทอรีผู้ใช้นั้นสำหรับผู้ใช้นั้น

เพื่อแก้ไข,

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

ขณะนี้การลงชื่อเข้าใช้ที่สำคัญควรใช้งานได้แล้ว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.