ยกเลิกการเชื่อมต่อ: ไม่มีวิธีการรับรองความถูกต้องที่ใช้ได้


12

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

ฉันคิดว่าฉันกำหนดค่าทุกอย่างอย่างถูกต้องในฝั่งไคลเอ็นต์ (Windows 7, PAGEANT ของ PUTTY, PUTTYGEN และ PLINK) แต่ดูเหมือนว่าฉันจะไม่ทำให้กลไกกุญแจสาธารณะทำงานได้ ฉันทำตามทุกขั้นตอนตัวชี้นำและคำแนะนำใน:

ตอนนี้ฉันสงสัยว่าฉันอาจจะพลาดบางสิ่งบนฝั่งเซิร์ฟเวอร์ (Linux, sshd) ดังนั้นฉันกำลังโพสต์/etc/ssh/sshd_configเนื้อหาปัจจุบัน:

Protocol 2
SyslogFacility AUTHPRIV
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
PasswordAuthentication no
PermitEmptyPasswords yes
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding yes
Subsystem       sftp    /usr/libexec/openssh/sftp-server

มีความคิดอะไรที่ฉันกำลังทำผิดหรือเปล่า?

UPDATE:ฉันพบเคล็ดลับสำหรับการเรียกใช้sshd ในโหมดแก้ไขข้อบกพร่องและนี่คือผลลัพธ์:

/home/winwin> /usr/sbin/sshd -d
debug1: sshd version OpenSSH_4.2p1
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug1: read PEM private key done: type DSA
debug1: private host key: #1 type 2 DSA
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-d'
debug1: Bind to port 22 on ::.
Server listening on :: port 22.
debug1: Bind to port 22 on 0.0.0.0.
Bind to port 22 on 0.0.0.0 failed: Address already in use.
debug1: Server will not fork when running in debugging mode.
debug1: rexec start in 4 out 4 newsock 4 pipe -1 sock 7
debug1: inetd sockets after dupping: 3, 3
Connection from 192.168.1.8 port 49828
debug1: Client protocol version 2.0; client software version PuTTY_Release_0.60
debug1: no match: PuTTY_Release_0.60
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.2
debug1: permanently_set_uid: 74/74
debug1: list_hostkey_types: ssh-rsa,ssh-dss
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: client->server aes256-ctr hmac-sha1 none
debug1: kex: server->client aes256-ctr hmac-sha1 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST_OLD received
debug1: SSH2_MSG_KEX_DH_GEX_GROUP sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_INIT
debug1: SSH2_MSG_KEX_DH_GEX_REPLY sent
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: KEX done

debug1: userauth-request for user winwin service ssh-connection method none
debug1: attempt 0 failures 0
debug1: PAM: initializing for "winwin"
debug1: PAM: setting PAM_RHOST to "win7client"
debug1: PAM: setting PAM_TTY to "ssh"
Failed none for winwin from 192.168.1.8 port 49828 ssh2
debug1: userauth-request for user winwin service ssh-connection method publickey
debug1: attempt 1 failures 1
debug1: test whether pkalg/pkblob are acceptable
debug1: temporarily_use_uid: 513/513 (e=0/0)
debug1: trying public key file /home/winwin/.ssh/authorized_keys
Authentication refused: bad ownership or modes for directory /home/winwin
debug1: restore_uid: 0/0
debug1: temporarily_use_uid: 513/513 (e=0/0)
debug1: trying public key file /home/winwin/.ssh/authorized_keys
Authentication refused: bad ownership or modes for directory /home/winwin
debug1: restore_uid: 0/0
Failed publickey for winwin from 192.168.1.8 port 49828 ssh2
Received disconnect from 192.168.1.8: 14: No supported authentication methods available
debug1: do_cleanup
debug1: PAM: cleanup
debug1: do_cleanup
debug1: PAM: cleanup

ตอนนี้ฉันสังเกตเห็นbad ownership or modes for directory /home/winwinข้อความสองข้อความ แต่ฉันตรวจสอบความเป็นเจ้าของหรือโหมดสำหรับไดเรกทอรี / home / winwin และ AFAICT พวกเขาตกลง:

/home> ls -lad winwin
drwxrwxr-x  21 winwin winwin 4096 Jul 13 21:24 winwin

และ:

/home/winwin> ls -lad .ssh
drwxr-xr-x  2 winwin winwin 4096 Jul 14 12:06 .ssh

และ:

/home/winwin/.ssh> ls -lad *
-rw-r--r--  1 winwin winwin 210 Jul 14 12:06 authorized_keys
-rw-r--r--  1 winwin winwin 210 Jul 14 01:58 authorized_keys.pub
-rw-r--r--  1 winwin winwin 394 Jul 14 01:57 authorized_keys.pub.orig

สิ่งที่อาจจะผิด

UPDATE II:ฉันพยายามchmod 600ตามคำแนะนำในคำตอบด้านล่าง:

/home/winwin> ls -lad .ssh
drw-------  2 winwin winwin 4096 Jul 14 13:13 .ssh

และ:

/home/winwin/.ssh> ls -lad *
-rw-------  1 winwin winwin 210 Jul 14 12:06 authorized_keys

แต่มันก็ยังไม่ทำงาน เหตุใดฉันจึงยังได้รับAuthentication refused: bad ownership or modes for directory /home/winwinข้อผิดพลาด

คำตอบ:


9

ลองรับสิทธิ์การเขียนกลุ่มจากโฮมไดเร็กตอรี่ของคุณ:

chmod g-w ~/

ทำให้โฟลเดอร์. ssh ของคุณอ่าน / เขียนได้ / ปฏิบัติได้โดยคุณเท่านั้น :

chmod 700 ~/.ssh

ทำให้ไฟล์คีย์ที่ได้รับอนุญาตของคุณสามารถอ่าน / เขียนได้โดยคุณเท่านั้น :

chmod 600 ~/.ssh/authorized_keys

ที่ควรลบข้อผิดพลาดการอนุญาต


ฉันได้เพียงเท่าที่คุณแนะนำและ~/.ssh ~/.ssh/authorized_keysยังไม่มีโชค สำหรับการรับสิทธิ์กลุ่มที่สามารถเขียนได้จากโฮมไดเร็กตอรี่เองฉันไม่สามารถทำเช่นนั้นได้เพราะมันจะบ่อนทำลายจุดประสงค์ทั้งหมดของผู้ใช้ / กลุ่มนี้ที่ถูกสร้างขึ้น โฮมไดเร็กตอรี่ของผู้ใช้นี้ต้องสามารถเขียนได้โดยกลุ่ม (มีชื่อที่แน่นอนเหมือนกันและ gid!) +1 สำหรับการพยายามช่วยเหลือ
WinWin

ขอขอบคุณ! chmod g-w ~/บันทึกฉันหลังจากชั่วโมงแห่งความบ้าคลั่งและการดึงผมเมื่อฉันไม่สามารถใช้ ssh กับ putty ในนามของผู้ใช้คนหนึ่งกับผู้ใช้คนอื่น ๆ ที่ทำงาน ok ...
PavelS

Gah ya ขอบคุณฉันสร้างไดเรกทอรีบ้านของฉันกับผู้ใช้อื่นของฉันและฉันหายไป chmod gw ~ /
คลาเรนซ์หลิว

5

ที่ประสบความสำเร็จ!

สิ่งที่ผมต้องทำคือการเปลี่ยนแปลงStrictModesที่จะไม่มี

ต่อส่วน 3.14ใน OpenSSH คำถามที่พบบ่อยและhttp://blogs.nullvision.com/?p=114

ว้าว.


อืมนั่นเป็นวิธีแก้ปัญหามากกว่าวิธีแก้ปัญหา ให้ฉันตรวจสอบบางอย่างในกล่องของฉัน
Rob

ฉันls -lad .sshกำลังแสดง drwx ดังนั้นchmod 700 ~/.sshและไฟล์ภายในทั้งหมด -rw ดังนั้นchmod 600 ~/.ssh/*-SHOULD- ทำงาน
Rob

ไม่เป็นไรเห็นไดเรกทอรีหลักของผู้ใช้นี้ต้องสามารถเขียนได้โดยกลุ่ม (มีชื่อที่แน่นอนและ gid!)ด้านล่าง
Rob

วิธีนี้ไม่มีผู้ใช้!
รัก

3

มีปัญหาที่คล้ายกัน เมื่อ poking รอบฉันสังเกตเห็นว่าฉันมีการเข้ารหัสไดเรกทอรีบ้านของฉันและสงสัยว่าเป็นปัญหา ฉันคัดลอกไฟล์คีย์ที่ได้รับอนุญาตไปยังไดเรกทอรีนอกไดเรกทอรีบ้านที่เข้ารหัสเปลี่ยนสิทธิ์อย่างเหมาะสม (chmod 700 [dir], chmod 600 [dir] / authorized_keys ฯลฯ )

จากนั้นแก้ไข sshd_config ของคุณเพื่อบอก sshd ของตำแหน่งใหม่สำหรับไฟล์คีย์ที่ได้รับอนุญาตรีสตาร์ท sshd และนั่นคือ

ดูเหมือนว่าจะมีการแก้ไขปัญหาของฉัน


2

ดูเหมือนว่าสิทธิ์ของคุณสำหรับโฮมไดเรกทอรี (หรือโฟลเดอร์. ssh / authorized_keys ของคุณ) ไม่ถูกต้อง การแก้ไขที่ควรแก้ไขปัญหาการเข้าสู่ระบบ ลองchmod 600 /home/winwin/.ssh/*
คุณอาจต้องทำchmod 700 /home/winwin/.sshเช่นกัน

SSHd จะปฏิเสธที่จะโหลดauthorized_keysไฟล์ของคุณหากใครก็ตามที่สามารถเขียนลงไฟล์ได้นอกจากผู้ใช้ของคุณ (ในฐานะเจ้าของ) เนื่องจากมีความเสี่ยงด้านความปลอดภัย


ขอบคุณ +1 ดูการอัปเดตของฉันด้านบนเนื่องจากฉันยังไม่สามารถระบุได้ว่าสิทธิ์ / ความเป็นเจ้าของที่ถูกต้องควรเป็นอย่างไร
WinWin

chmod 600 /home/winwin/.ssh/*ฉันก็พยายาม มันไม่ได้ช่วยอะไร : - /
WinWin

1
@ WinWin คุณตั้งค่าไว้ใน.sshไดเรกทอรีด้วยหรือไม่ (ฉันปรับปรุงคำตอบของฉัน)
Darth Android

ใช่ฉันทำ. ยังไม่มีโชค
WinWin

2

ฉันต่อสู้ผ่านทางนี้และในที่สุดก็พบวิธีแก้ปัญหาที่ไม่ก่อให้เกิดการละเมิดความปลอดภัยที่อาจเกิดขึ้นเช่นStrictModes ไม่มีไม่

ตรวจสอบให้แน่ใจว่าการตั้งค่าของคุณเป็นดังนี้:

chmod 0755 / home / {userdir}

chmod 0700 / home / {userdir} /.ssh

chmod 0600 / home / {userdir} /.ssh/authorized_keys

โดยที่ {userdir} เป็นไดเรกทอรีที่เป็นปัญหา

ที่สำคัญคือ chmod 0755 ซึ่งทำให้มั่นใจได้ว่ามีเพียงผู้ใช้เท่านั้นที่สามารถเขียนไปยังไดรฟ์บ้าน ฉันคัดลอกสิ่งนี้จากการกำหนดค่าผู้ใช้ที่ใช้งานได้และpresto! ชื่อผู้ใช้อื่น ๆ ก็เริ่มทำงานเช่นกัน!

หวังว่าสิ่งนี้จะช่วยให้คนอื่น ๆ เหมือนที่ฉันทำและช่วยคุณประหยัดเวลาสองสามชั่วโมง


1

ข้อความแสดงข้อผิดพลาดนี้อาจเกิดจาก SELinux ทำให้ sshd ไม่สามารถเข้าถึงauthorized_keysได้ ลองสิ่งนี้:

restorecon -FRvv ~/.ssh

(จากคำตอบนี้ )


0
chown -R winwin.winwin /home/winwin/
chmod 700 /home/winwin/
find /home/winwin/ -type d -exec chmod 700 {} \;
find /home/winwin/ -type f -exec chmod 600 {} \;

3
ยินดีต้อนรับสู่ Super User! มันจะดีถ้าคุณสามารถอธิบายสิ่งที่คำสั่งเหล่านี้ทำ
slhck

0

ในกรณีของฉันมันเป็นไดเรกทอรีบ้านที่มีเจ้าของ (root) มากกว่าผู้ใช้จริงที่ไดเรกทอรีบ้านนี้เป็นของ (ความโง่เขลาของฉันเมื่อสร้างบ้าน dir กับ root สำหรับผู้ใช้อื่น)

Chown [user]:[group] /home/[user] 

ได้แก้ไขปัญหานี้แล้ว (และแน่นอนติดอยู่กับสิทธิ์ของไฟล์ / dir ที่แชร์ในคำตอบอื่น ๆ )

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