Підключіться до SQL Server за допомогою аутентифікації Windows в іншому домені


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" для підтримки ваших паролів - вона також оновлюється.
Містер Магуо

Відповіді:


70

Ви намагаєтеся передати облікові дані Windows у простому тексті з рядка з'єднання програми. Це просто не так, як працює автентифікація Windows, і значною мірою перемагає мету.

Ви також не можете просто створити те саме ім’я користувача з тим самим паролем у власному домені, і очікувати, що це магічно спрацює. Ім’я домену все ще є частиною перевірки - ваша машина або повинна бути частиною домену, або домен, на якому знаходиться ваша машина, повинен довіряти домену школи.

Єдине рішення, про яке я знаю, - це SSMS, і це runas /netonlyхитрість, описана в цій відповіді . Це обманює Windows на запуск 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

Чи є спосіб імітувати цю поведінку без командного рядка?
Жиль Лесіре

1
@Gilles ви можете створити пакетний файл і двічі клацнути пакетний файл, або ви можете використовувати цей рядок і, можливо, створити ярлик
Aaron Bertrand

102

Є ще один спосіб, який я зараз використовую, віддаючи перевагу runas /netonlyметоду.

Ви можете додати облікові дані до свого профілю в Windows за допомогою диспетчера даних, який можна знайти на панелі керування Windows.

  1. Відкрийте менеджер довірених даних
  2. Натисніть "Додати обліковий запис Windows"
  3. Заповніть поле "Інтернет або мережева адреса" іменем та номером порту екземпляра SQL, для якого потрібно зберігати облікові дані.

    Приклад: UniServer:1433(1433 - порт за замовчуванням, вам може знадобитися інший порт, особливо якщо ви підключаєтесь до названого екземпляра)

  4. Заселіть "Ім'я користувача" (не забудьте включити домен, наприклад MYDOMAIN\MYUSER)
  5. Заселіть "Пароль"
  6. Натисніть кнопку ОК

Якщо ви вказали правильне ім’я сервера, порт і дані для входу, тепер ви зможете використовувати автентифікацію Windows з більшості клієнтських інструментів, SSMS, Excel і будь-яких інших. Всі вони використовуватимуть збережені облікові дані.

Порада: Іноді вам потрібно використовувати FQN для сервера під час додавання облікових даних. наприклад UniServer.UniDomain.org:1433, все залежить від специфіки вашої мережі.

Ось коротка демонстрація методу: http://youtu.be/WiVBPsqB9b4

Це захоплення екрана, що я намагаюся (і не вдалося) підключитися до SQL-сервера, що працює в VM з мого робочого столу, потім додавши необхідні облікові дані та повторюючи спробу - успішно.

Порада: використовуйте команду "cmdkey / add" для створення сценарію та оновлення збережених облікових даних.


Цікаво! Здається, це залежить від того, що ваша клієнтська машина думає, що віддалену машину називають, а не від того, що насправді може називатися. Я помістив винайдений запис ("verysillytest.mwardm") у свій хост-файл для IP-адреси (як це не роблять ті з нас, хто звертається за межі доменів) і налаштував обліковий запис на ім'я "verysillytest.mwardm: 1433 ". Потім я можу підключитися щасливо (з невеликого додатка під назвою Query Express), використовуючи або ім’я хоста, або IP-адресу.
mwardm

@mwardm так, тому я рекомендую використовувати ping або nslookup, оскільки він вкаже вам ім’я саме так, як вам потрібно його використовувати, включаючи особливості верхнього / нижнього регістру.
Містер Магуо

Ах, ну "ping -a" нічого не дав, і nslookup не (відразу) працював, оскільки я не використовував DNS-сервери домену. Не хвилюйтесь, я фактично віддаю перевагу гнучкості просто знати IP-адресу (та логін) та вміти скласти власне ім’я!
mwardm

1
Дивовижно, це працює! Мені просто цікаво - чи має вона працювати так чи це помилка чи помилка дизайну на стороні SQL Server? Майкрософт або люди з Microsoft рекламують всюди, що вам потрібно мати підключений до домену апарат, інакше немає способу підключитися до SQL Server, який налаштований приймати лише дані домену.
Dawid Ferenczy Rogožan

До речі, я б сказав, що цю відповідь слід позначати як прийняту, оскільки це, здається, є реальним рішенням, а інша відповідь більше нагадує спосіб вирішення.
Dawid Ferenczy Rogožan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.