การเชื่อมต่อกับ Samba ไปยัง Windows Share จะส่งคืน“ NT_STATUS_DUPLICATE_NAME”


10

ฉันตั้งค่าไดเรกทอรีที่ใช้ร่วมกันบนเครื่อง Windows ของฉันและได้รับสิทธิ์ควบคุมเต็มรูปแบบสำหรับชื่อผู้ใช้ @ workgroup

เมื่อฉันพยายามที่จะเชื่อมต่อกับเครื่อง Windows กับ Linux ใช้ smbclient NT_STATUS_DUPLICATE_NAMEฉันได้รับข้อผิดพลาด นี่คือการถอดเสียง:

$ smbclient -U username -W workgroup -L //windows-machine
Enter username's password: 
Domain=[workgroup] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
tree connect failed: NT_STATUS_DUPLICATE_NAME

NT_STATUS_LOGON_FAILUREถ้าผมจงใจป้อนชื่อผู้ใช้ที่ไม่ถูกต้องใช้รหัสผ่านหรือเวิร์กกรุ๊ปที่ฉันได้รับข้อผิดพลาดที่แตกต่างกัน ดังนั้นดูเหมือนว่าฉันได้รับข้อมูลอื่น ๆ ที่ถูกต้อง

ฉันใส่รายการใน / etc / hosts ที่ชี้windows-machineไปยังที่อยู่ IP ชื่อ NetBIOS ของเครื่อง windows แตกต่างกัน

ไม่มีใครรู้ว่าข้อผิดพลาดนี้หมายถึงอะไร?

คำตอบ:


9

ชื่อ NetBIOS ของเครื่อง windows แตกต่างกัน

นั่นคือปัญหาของคุณ แก้ไขได้อย่างง่ายดายโดยแฮ็ครีจิสทรีในเครื่อง Windows ดูhttp://support.microsoft.com/kb/281308สำหรับรายละเอียด

ปรับปรุง

บทความสนับสนุนดั้งเดิมที่ลิงค์ด้านบนหายไป (ขอบคุณ Microsoft) บทความใหม่เป็นไฟล์ SMB เข้าถึงเซิร์ฟเวอร์ใช้ร่วมกันไม่ประสบความสำเร็จผ่าน DNS CNAME นามแฝง

Jorilยังชี้ให้เห็นว่าเซิร์ฟเวอร์สามารถมีชื่อ NetBIOS หลายชื่อ สิ่งนี้ทำได้โดยการแก้ไขรีจิสตรีคีย์:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters\OptionalNames

และเพิ่มชื่อพิเศษ


1
ฉันสงสัยว่าทำไมมันถึงไม่ได้รับการแก้ไขในแพทช์
Neil

ไม่ใช่ข้อผิดพลาด แต่ออกแบบมาเพื่อจงใจ อาจเป็นเรื่องความปลอดภัย แต่ฉันไม่แน่ใจว่าทำไม ฉันคิดว่ามันจะหยุดคุณโดยไม่ได้ตั้งใจเชื่อมต่อกับเซิร์ฟเวอร์ผิดถ้าคุณมีรายการโกงในไฟล์โฮสต์หรือ DNS ดัฟฟ์ ส่วนตัวแล้วฉันวางแฮ็ครีจิสทรีในเซิร์ฟเวอร์ทั้งหมดของฉัน
John Rennie

ลิงก์ดูเหมือนว่าตาย (404) อย่างไรก็ตามกุญแจควรเป็นHKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters\DisableStrictNameChecking
Joril

... หรือดีกว่านั้นชื่อตัวเลือก
Joril

6

คุณอาจได้รับข้อผิดพลาดนั้นเนื่องจากเครื่อง Windows ไม่เข้าใจตัวเองว่าเป็นสิ่งที่คุณเชื่อมต่ออยู่ (การใช้ข้อมูลการตรวจสอบความถูกต้องผิดจะเปลี่ยนข้อผิดพลาดได้เนื่องจากปัญหานี้ไม่ได้มีการครอบตัดจนกระทั่งในภายหลังในกระบวนการเชื่อมต่อ)

ลองเชื่อมต่อกับว่ามันเป็นหมายเลข IP windows-machineของมันไม่ หากใช้งานได้จะเป็นการยืนยันว่าชื่อนั้นเป็นสิ่งที่เกิดขึ้นและคุณสามารถแก้ไขได้ด้วยการทำให้ PDC เข้าใจตัวเองว่าเป็นwindows-machineหรือเพียงแค่ใช้หมายเลข IP


3

คุณควรใช้แฟล็ก "-m" เพื่อระบุรุ่นโปรโตคอลสูงสุดที่คุณจะใช้ โดยค่าเริ่มต้นคือ "NT1" ที่นี่จากหน้าหลักของ smbclient:

-m|--max-protocol protocol
    This allows the user to select the highest SMB protocol level that
    smbclient will use to connect to the server. By default this is set
    to NT1, which is the highest available SMB1 protocol. To connect
    using SMB2 or SMB3 protocol, use the strings SMB2 or SMB3
    respectively. Note that to connect to a Windows 2012 server with
    encrypted transport selecting a max-protocol of SMB3 is required.

ฉันสงสัยว่ารุ่น "NT1" จะพึ่งพาสิ่ง netbios ซึ่งแตกต่างจาก SMB2 และต่อไป

ลองอีกครั้งด้วย "-m SMB3" หรือ "-m SMB2" คุณจะได้รับประโยชน์มากมายจากประสิทธิภาพเช่นกัน


2

คุณสามารถใช้ตัวเลือก -I และระบุที่อยู่ IP

smbclient -U username -W workgroup -L //windows-machine  -I <machine-ipaddr>

0

คุณไม่สามารถใช้ชื่อเครื่องใน / etc / hosts หรือชื่อจากเซิร์ฟเวอร์ DNS

คุณต้องใช้ที่อยู่ IP ของเครื่องหรือชื่อ NetBIOS ของเครื่องที่ระบุใน Windows

วิธีค้นหาชื่อ NetBIOS ใน Windows XP:

  1. คลิกขวาที่ "My Computer"
  2. คลิก "คุณสมบัติ"
  3. คลิกแท็บ "ชื่อคอมพิวเตอร์"
  4. อ่านฟิลด์ "ชื่อคอมพิวเตอร์แบบเต็ม" จนถึงช่วงแรก '.'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.