เซิร์ฟเวอร์ OpenSSH ปฏิเสธที่จะยอมรับการตรวจสอบสิทธิ์ที่สำคัญ


13

ฉันพยายามใช้การรับรองความถูกต้องของรหัสสาธารณะบนเซิร์ฟเวอร์ใหม่ของฉันและฉันเจอปัญหานี้

$ ssh -v -i .ssh/server 192.168.1.100
OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data .ssh/config
debug1: Applying options for *
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug1: Connecting to 192.168.1.100 [192.168.1.100] port 22.
debug1: Connection established.
debug1: identity file .ssh/server type -1
debug1: identity file .ssh/server-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.8p1 Debian-1ubuntu3
debug1: match: OpenSSH_5.8p1 Debian-1ubuntu3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.6
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host '192.168.1.100' is known and matches the RSA host key.
debug1: Found key in .ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: .ssh/server
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: password

จากนั้นฉันต้องใส่รหัสผ่านเพื่อเข้าสู่ระบบ

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

หากไม่มีการเชื่อมต่อ SSH แล้วฉันไม่สามารถเชื่อมต่อได้หากไม่มีรหัสผ่าน

นี่เป็นเรื่องแปลกสำหรับฉันฉันตรวจสอบ MD5 /usr/sbin/sshdระหว่างเซิร์ฟเวอร์ใหม่กับเซิร์ฟเวอร์ปกติอื่น ๆ มันเหมือนกัน จากนั้นฉันก็เพียงแค่คัดลอก/etc/ssh/sshd_configจากเซิร์ฟเวอร์อื่น ๆ service ssh restartตามปกติไปยังเซิร์ฟเวอร์ใหม่และวิ่ง ปัญหายังคงมีอยู่

ฉันควรจะแก้ไขสิ่งนี้อย่างไร

คำตอบ:


10

ตรวจสอบว่า.sshโฟลเดอร์และไฟล์ที่อยู่ในเครื่องลูกค้าสามารถอ่านได้โดยเจ้าของ ( chmod -R 600 .ssh) และเจ้าของไฟล์นั้นถูกต้องสำหรับโฟลเดอร์และไฟล์ (ใช้chownคำสั่งหากจำเป็น)

ตรวจสอบauthorized_keysโฟลเดอร์และไฟล์บนเซิร์ฟเวอร์ (อาจเป็น/root/.sshหรือในโฟลเดอร์โฮมของผู้ใช้ที่พยายามเข้าสู่ระบบ) เพื่อให้แน่ใจว่าสิทธิ์และเจ้าของของพวกเขาถูกตั้งค่าในแบบเดียวกัน


แก้ไข: ขึ้นอยู่กับข้อเสนอแนะเพิ่มเติม (และคาดเดาบางอย่าง!) - คุณสามารถตรวจสอบ/etc/ssh/sshd_configและดูว่าพารามิเตอร์ต่อไปนี้มีการตั้งค่าเช่นด้านล่าง ถ้าไม่ลองแก้ไขมัน

AuthorizedKeysFile /home/%u/.ssh/authorized_keys

หมายเหตุสิ่งนี้ถือว่าคุณไม่ได้ล็อกอินจากระยะไกลในฐานะรูท


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

ตกลง - ฉันกำลังเพิ่มคำตอบลงบนสิ่งนี้
Linker3000

มีบรรทัดของ "#AuthorizedKeysFile% h / .ssh / authorized_keys" ฉันลองคอมเม้นท์ แต่ไม่มีประโยชน์ .. btw, '/ usr / sbin / sshd' เดียวกันกับ 'sshd_config' เดียวกันพวกมันมีพฤติกรรมแตกต่างกันอย่างไร
lxyu

ในที่สุดฉันก็ติดตั้งอูบุนตูอีกครั้งจากนั้นฉันก็ตั้งค่า openssh-server ในหนึ่งนาทีและมันก็ทำงานได้ดีในตอนนี้ ... ยังไม่รู้ว่ามีอะไรผิดปกติ :(
lxyu

บางครั้งมันยากที่จะค้นหาว่าปัญหาคืออะไร ฉันเคยทำการสะกดผิด authorized_keys เป็น auhorized_keys ฉันต้องการประมาณหนึ่งชั่วโมงเพื่อแก้ไขปัญหานี้ คุณเห็นการสะกดผิดหรือไม่ มันยากจริงๆ! :-)
nalply

4

ฉันแก้ไขข้อผิดพลาดนี้โดยการลบออกid_rsa.pubจาก. ssh

ฉันคัดลอกid_rsaจากเครื่องอื่นและแจกจ่ายไปยังลูกค้าจำลองหลายตัว ดังนั้นid_rsaและid_rsa.pubเป็นกุญแจที่แตกต่างกันซึ่งทำให้ไม่สามารถใช้งานได้id_rsaทั้งหมด

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


3

750จากการค้นพบของฉันได้รับอนุญาตอย่างน้อยผู้อำนวยการบ้านเป้าหมายคือ ถ้าบิตของโลกไม่เป็น0เช่นนั้นมันจะไม่ทำงาน

เช่น. สำหรับไดเรกทอรีของรูท:

drwxr-x--- 3 root root 4096 Jul 20 11:57 root

ถัดไปคือ /root/.ssh

drwx------  2 root root  4096 Jul 17 03:28 .ssh

แล้วก็ /root/.ssh/authorized_keys

-rw------- 1 root root 1179 Jul 17 03:28 authorized_keys

3

ในกรณีของฉันสิทธิ์บนโฮมไดเร็กตอรี่นั้น775แทนที่จะเป็น0755หรือต่ำกว่า

พา ธ ทั้งหมดไปยังไฟล์ authorized_keys คือ/home/user/.ssh/ต้องเป็น0755หรือต่ำกว่า


ขอบคุณนี่เพิ่งอ่านเรื่องปวดหัวที่ฉันมีมาเป็นเวลาหนึ่งสัปดาห์แล้ว คนส่วนใหญ่พูดถึงเฉพาะโฟลเดอร์. ssh (700) และ authorized_keys (600)
Jonathan Komar

2

หลังจากหนักใจมากฉันได้รับการแก้ไขปัญหา:

ไดเรกทอรีบ้านของผู้ใช้ไม่ควรได้รับอนุญาต777หรือเขียนได้ทั่วโลก หากเป็นกรณีนี้การตรวจสอบคีย์ SSH จะล้มเหลวและคุณต้องใส่รหัสผ่านเพื่อเข้าสู่ระบบ


1

เพียงตรวจสอบให้แน่ใจว่าบัญชีที่คุณพยายามใช้ ssh นั้นเป็นผู้ใช้ที่มีรหัสผ่านบนเซิร์ฟเวอร์ระยะไกล ฉันเพิ่งกระแทกหัวของฉันบนผนังเป็นเวลาครึ่งชั่วโมงก่อนที่จะหาคำตอบนี้ที่นี่: /programming//a/14421105/758174


1

หากคุณ/etc/ssh/sshd_configมีบรรทัดต่อไปนี้ที่ไม่ได้แสดงความคิดเห็นดังนั้นการกำหนดค่า SSH ของคุณจะอนุญาตเฉพาะรายการผู้ใช้คงที่ในระบบและคุณต้องเพิ่มบัญชีใหม่ใด ๆ ลงในรายการ:

AllowUsers root user1 user2 user3

ผู้ใช้รายอื่นที่นอกเหนือจากที่ระบุไว้ข้างต้นพยายามเข้าสู่ระบบผ่าน SSH จะได้รับข้อความแสดงข้อผิดพลาดนี้:

Roaming not allowed by server

0

ฉันพบว่าหลังจากเปลี่ยนชื่อผู้ใช้และกลุ่ม (แต่ไม่ใช่ ID) ใน/etc/passwdและ/etc/groupแต่ลืมที่จะเปลี่ยนแปลง/etc/shadowตามนั้นฉันได้รับข้อความ "ไม่อนุญาตการโรมมิ่ง"

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