เชื่อมต่อกับ SQL Server ด้วย Windows Authentication ในโดเมนอื่น


73

ฉันพยายามเชื่อมต่อกับ SQL Server ระยะไกลบน VPN ในโดเมนอื่น เมื่อฉันป้อนชื่อเซิร์ฟเวอร์บน SQL Server และเลือกพารามิเตอร์การเชื่อมต่อเพิ่มเติมเพื่อเพิ่มสิ่งพิเศษที่โรงเรียนของฉันต้องการ:

Integrated Security=SSPI; User ID=DOMAIN\username; Password=Password

ฉันได้รับข้อผิดพลาดต่อไปนี้:

การเข้าสู่ระบบล้มเหลว การเข้าสู่ระบบมาจากโดเมนที่ไม่น่าเชื่อถือและไม่สามารถใช้กับการตรวจสอบ Windows


ปัญหาเดียวของโซลูชัน Windows Credential Manager คือถ้าคุณมีฐานข้อมูลจำนวนมากที่คุณสนับสนุนคุณต้องมีรายการสำหรับแต่ละรายการและอัปเดตแต่ละครั้งที่คุณต้องอัปเดตรหัสผ่านโดเมนของคุณ สำหรับบางคนที่อาจเป็นทุกๆ 30 - 60 วัน
smehaffie

นี้โพสต์ที่เกี่ยวข้องบ้าง
RBT

@smehaffie คุณสามารถใช้การเขียนสคริปต์และคำสั่ง "cmdkey / add" เพื่อรักษารหัสผ่านของคุณ - มันยังปรับปรุง
นาย Magoo

คำตอบ:


70

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

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

วิธีแก้ปัญหาเดียวที่ฉันรู้คือสำหรับ SSMS และนั่นเป็นrunas /netonlyเคล็ดลับที่อธิบายไว้ในคำตอบนี้ คนโง่ใช้ Windows ในการเปิดตัว SSMS เป็นล็อกอินที่คุณระบุแทนที่จะเป็นของคุณเอง (นี่ไม่ใช่สิ่งที่คุณสามารถตั้งค่าในกล่องโต้ตอบคุณสมบัติการเชื่อมต่อของ SSMS เป็นวิธีที่คุณต้องการเปิดใช้ SSMS จากบรรทัดคำสั่งหรือทางลัด):

runas /netonly /user:domain\username "C:\path_to\ssms.exe"

สิ่งนี้จะแจ้งให้คุณใส่รหัสผ่านในโดเมนระยะไกล มันจะมีลักษณะเหมือนจะใช้ข้อมูลประจำตัวของ Windows ท้องถิ่นของคุณแต่มันไม่ได้

เป็นไปได้ที่จะทำงานกับ Visual Studio เช่นกัน แต่ฉันไม่รู้จริงๆ

ดังนั้นทางเลือกของคุณคือ:

  • ให้มหาวิทยาลัยอนุญาตให้คุณเข้าร่วมเครื่องกับโดเมน
  • ให้มหาวิทยาลัยเพิ่มโดเมนของคุณเป็นโดเมนที่เชื่อถือได้
  • มีกล่องกระโดดภายใน VPN ที่อนุญาตให้คุณ RDP และใช้เครื่องมือเชื่อมต่อโดยตรงกับเครื่อง SQL Server
  • ใช้การรับรองความถูกต้องของ SQL
  • ลองใช้runas /netonlyเคล็ดลับกับ Visual Studio
  • เพียงใช้runas /netonlyเคล็ดลับกับ SSMS

runasสิ่งที่ไม่ทำงานกับ Visual Studio
Daniel Hutmacher

มีวิธีเลียนแบบพฤติกรรมนี้โดยไม่ได้รับคำสั่ง?
Gilles Lesire

1
@Gilles คุณสามารถสร้างไฟล์แบตช์และดับเบิลคลิกที่ไฟล์แบทช์หรือคุณสามารถใช้สตริงนั้นและสร้างทางลัดบางที
Aaron Bertrand

102

มีอีกวิธีหนึ่งซึ่งตอนนี้ฉันใช้ในการตั้งค่าrunas /netonlyวิธีการ

คุณสามารถเพิ่มข้อมูลรับรองในโปรไฟล์ของคุณใน Windows โดยใช้ตัวจัดการข้อมูลประจำตัวที่พบในแผงควบคุม Windows

  1. เปิดตัวจัดการข้อมูลรับรอง
  2. คลิก "เพิ่มข้อมูลรับรอง Windows"
  3. เติมฟิลด์ "อินเทอร์เน็ตหรือที่อยู่เครือข่าย" ด้วยชื่อและหมายเลขพอร์ตของอินสแตนซ์ SQL ที่คุณต้องการจัดเก็บข้อมูลรับรอง

    ตัวอย่าง: UniServer:1433(1433 เป็นพอร์ตเริ่มต้นคุณอาจต้องใช้พอร์ตอื่นโดยเฉพาะถ้าคุณเชื่อมต่อกับอินสแตนซ์ที่มีชื่อ)

  4. เติม "ชื่อผู้ใช้" (อย่าลืมใส่โดเมนเช่นMYDOMAIN\MYUSER)
  5. เติม "รหัสผ่าน"
  6. คลิกตกลง

หากคุณมีชื่อเซิร์ฟเวอร์, พอร์ตและรายละเอียดการเข้าสู่ระบบที่ถูกต้องตอนนี้คุณควรจะสามารถใช้ Windows Authentication จากเครื่องมือไคลเอนต์ส่วนใหญ่, SSMS, Excel หรืออะไรก็ได้ พวกเขาทั้งหมดจะใช้ข้อมูลประจำตัวที่เก็บไว้

คำแนะนำ: บางครั้งคุณต้องใช้ FQN สำหรับเซิร์ฟเวอร์เมื่อเพิ่มข้อมูลรับรอง เช่นUniServer.UniDomain.org:1433ทุกอย่างขึ้นอยู่กับเครือข่ายของคุณโดยเฉพาะ

นี่คือตัวอย่างวิธีการอย่างรวดเร็ว: http://youtu.be/WiVBPsqB9b4

เป็นหน้าจอที่ฉันพยายาม (และล้มเหลว) เพื่อเชื่อมต่อกับ SQL Server ที่ทำงานใน VM จากเดสก์ท็อปของฉันจากนั้นเพิ่มข้อมูลประจำตัวที่จำเป็นและลองอีกครั้ง - สำเร็จ

เคล็ดลับ: ใช้คำสั่ง "cmdkey / add" เพื่อสร้างและอัปเดตข้อมูลประจำตัวที่เก็บไว้ของสคริปต์


ที่น่าสนใจ! ดูเหมือนว่าจะขึ้นอยู่กับสิ่งที่เครื่องไคลเอนต์ของคุณคิดว่าเครื่องระยะไกลถูกเรียกมากกว่าที่จะเรียก ฉันได้ใส่รายการที่คิดค้น ("verysillytest.mwardm") ในไฟล์โฮสต์ของฉันสำหรับที่อยู่ IP (เนื่องจากพวกเราเข้าถึงจากภายนอกโดเมนจะไม่ทำ) และตั้งค่าข้อมูลรับรองในชื่อ "verysillytest.mwardm: 1433" ฉันสามารถเชื่อมต่ออย่างมีความสุข (จากแอพเล็ก ๆ ที่เรียกว่า Query Express) โดยใช้ชื่อโฮสต์หรือที่อยู่ IP
mwardm

@maym ใช่นั่นเป็นเหตุผลที่ฉันแนะนำให้ใช้ ping หรือ nslookup เพราะจะบอกชื่อให้คุณตรงตามที่คุณต้องการใช้รวมถึงข้อมูลเฉพาะ / ตัวเล็ก
นาย Magoo

อ่า "ping -a" ก็ไม่ได้ให้อะไรกับฉันเลยและ nslookup ก็ใช้งานไม่ได้ (ทันที) เพราะฉันไม่ได้ใช้เซิร์ฟเวอร์ DNS ของโดเมน ไม่ต้องกังวลฉันชอบความยืดหยุ่นในการเพียงแค่รู้ที่อยู่ IP (และการเข้าสู่ระบบ) และสามารถสร้างชื่อของฉันเองได้!
mwardm

1
เยี่ยมยอดมันใช้งานได้! ฉันแค่สงสัย - มันควรจะทำงานแบบนั้นหรือว่าเป็นข้อผิดพลาดหรือการออกแบบล้มเหลวในด้านของ SQL Server? Microsoft หรือบุคคลจาก Microsoft โฆษณาทุกที่ที่คุณต้องมีเครื่องที่เชื่อมต่อกับโดเมนมิฉะนั้นจะไม่มีวิธีเชื่อมต่อกับ SQL Server ซึ่งตั้งค่าให้ยอมรับเฉพาะข้อมูลรับรองโดเมน
Dawid Ferenczy Rogožan

BTW ฉันจะบอกว่าคำตอบนี้ควรถูกทำเครื่องหมายว่าเป็นที่ยอมรับเพราะมันดูเหมือนจะเป็นทางออกที่แท้จริงและคำตอบอื่น ๆ ก็เหมือนการแก้ปัญหา
Dawid Ferenczy Rogožan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.