การอนุญาตของ SSH ถูกปฏิเสธ (กุญแจสาธารณะ) แต่รูท ssh ทำงานได้


15

ฉันพยายามตั้งค่าการเข้าถึง ssh สำหรับบัญชีผู้ใช้ที่ฉันสร้างขึ้นโดยพ่อครัวบนเซิร์ฟเวอร์ Ocean ubuntu 12.04 แบบดิจิทัล ฉันมีตัวเลือกในมหาสมุทรดิจิตอลเพื่อคัดลอกคีย์ ssh ของ mac โดยอัตโนมัติเมื่อสร้างหยด

ฉันสามารถใช้งานรูทแบบไม่มีปัญหาได้ แต่ผู้ใช้รายอื่นไม่สามารถตรวจสอบสิทธิ์ได้ นี่ดูเหมือนจะเป็นปัญหาทั่วไปและฉันตรวจสอบคำตอบอื่น ๆ แล้วพบคำสั่งนี้เพื่อรับข้อมูลเพิ่มเติม:

ssh -vvv -i id_rsa user@serverIP

บันทึกสำหรับผู้ใช้รูท (ซึ่งสำเร็จ) ด้วยคำสั่งนั้นคือ

การแก้ปัญหา

1: Offering RSA public key: /Users/evan/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug2: input_userauth_pk_ok: fp snip!
debug3: sign_and_send_pubkey: snip!
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).

ผู้ใช้ล้มเหลว:

การแก้ปัญหา

1: Authentications that can continue: publickey
debug3: start over, passed a different list publickey
debug3: preferred 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 RSA public key: /Users/evan/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Trying private key: /Users/evan/.ssh/id_dsa
debug3: no such identity: /Users/evan/.ssh/id_dsa: No such file or directory
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.

ซึ่งสำหรับฉันหมายความว่ารหัสสาธารณะไม่ถูกต้อง แต่ถ้าฉันเข้าสู่ระบบในฐานะผู้ใช้รูทและไปที่home/otheraccount/.ssh/authorized_keysฉันจะเห็นว่าคีย์ ssh ของฉันอยู่ที่นั่น ฉันคิดว่าอาจจะมีข้อผิดพลาดดังนั้นฉันจึงทำได้cp .ssh/authorized_keys ~/home/otheraccout/.ssh/authorized_keysแต่นั่นก็ไม่ได้ช่วยอะไร ฉันไม่รู้ว่าจะดูที่ไหนดี

ของฉันetc/ssh/sshd_conig:

# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
#Privilege Separation is turned on for security
"sshd_config" 88L, 2508C
KeyRegenerationInterval 3600
ServerKeyBits 768

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile     %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no

# GS

SAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

X11Forwarding no
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

#MaxStartups 10:30:60

AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM no
Banner /etc/ssh_banner

แก้ไข:

drwx------ 2 deploy deploy 4096 Apr 20 06:00 .ssh
-rw------- 1 deploy deploy 820 Apr 20 05:35 authorized_keys

Edit2:

ตามที่แนะนำในความคิดเห็น/var/log/authlog::

Apr 21 04:59:30 localhost sshd[586]: User deploy not allowed because account is locked
Apr 21 04:59:30 localhost sshd[586]: input_userauth_request: invalid user deploy [preauth]

ฉันพยายามที่จะทำsudo usermod --expiredate -1 deployและมันกลับมาno changes


1
สิทธิ์ของคุณถูกต้องหรือไม่ ~/home/otheraccount/.sshควรมี700และ~/home/otheraccount/.ssh/authorized_keysควรได้600รับอนุญาตและทั้งสองไฟล์ควรเป็นเจ้าของโดยotheraccount
เคลม

ฉันคิดว่ามันถูกต้องการปรับใช้เป็นบัญชีอื่น ๆ : drwx------ 2 deploy deploy 4096 Apr 20 06:00 .ssh -rw------- 1 deploy deploy 820 Apr 20 05:35 authorized_keys
2936314

บรรทัดบันทึกข้อมูลในserverIP( /var/log/auth.log) คืออะไรเมื่อคุณพยายามลงชื่อเข้าdeployใช้ในฐานะผู้ใช้
ผ่อนผัน

ที่น่าสนใจมันบ่นว่าผู้ใช้ถูกล็อคฉันเพิ่มบันทึกข้างต้น
user2936314

จะไม่ให้ฉันแก้ไขความคิดเห็นข้างต้น: passwd -uฉันคงนี้กับ สามารถเข้าร่วมในdeployตอนนี้ แต่อยากรู้อยากเห็นจริงๆว่าทำไมพ่อครัวของฉันปรับใช้กำลังสร้างผู้ใช้ที่ถูกล็อค กรุณาคัดลอก / วางความคิดเห็นของคุณด้านบนเป็นคำตอบเพื่อให้ฉันสามารถให้เครดิตคุณ
user2936314

คำตอบ:


16
  • การเข้าสู่ระบบ SSH อาจล้มเหลวได้จากหลายสาเหตุ (การอนุญาตไดเรกทอรี / ไฟล์ไม่ถูกต้อง, คีย์ไม่ถูกต้อง ฯลฯ ) และไคลเอนต์ที่เชื่อมต่อจะเพิ่งได้รับPermission deniedหรือNo more authentication methods to tryข้อผิดพลาดทั่วไปบางอย่าง

  • เหตุผลที่แน่นอนสำหรับความล้มเหลวในการเข้าสู่ระบบจะมีอยู่ในบันทึก ssh /var/log/auth.logหรือ/var/log/secureขึ้นอยู่กับการกำหนดค่า syslog


นี่เป็นคำตอบที่ดีที่สุดสำหรับทุกคำถามเกี่ยวกับปัญหาการเข้าสู่ระบบ SSH ที่ล้มเหลวที่ฉันเคยเห็น! แทนที่จะคาดเดาแบบสุ่มเกี่ยวกับการอนุญาตที่ไม่ถูกต้องและชื่อไฟล์เป็นคำตอบอื่น ๆ ทั้งหมดแนะนำเพียงแค่ตรวจสอบบันทึกดังกล่าวและพวกเขามีข้อมูลทั้งหมดที่คุณต้องการ!
ดูแลระบบ Yaroslav

เหตุผลที่แน่นอนไม่ได้อยู่ในไฟล์บันทึกของฉัน ทั้งหมดที่กล่าวมาคือเซสชันนั้นเปิดกว่าปิด
VectorVortec

3

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

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

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?

SAD :-( เพื่อบอกว่าฉันปิดใช้งาน 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 แบบไม่มีรหัสผ่านเพื่อทำงาน ทุกคนสามารถปรับปรุงคำตอบได้ไหม

เหมือนกันที่นี่: /superuser/352368/ssh-still-asks-for-password-after-setting-up-key-based-authentication/1072999#1072999

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