Подключение к SQL Server с проверкой подлинности Windows в другом домене

74

Я пытаюсь подключиться к удаленному серверу SQL через VPN в другом домене. Когда я ввожу имя сервера на SQL Server и выбираю «Дополнительные параметры подключения», чтобы добавить некоторые дополнительные вещи, необходимые моей школе:

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

Я получаю следующую ошибку:

Ошибка входа. Логин входит в ненадежный домен и не может использоваться с аутентификацией Windows.

fxuser
источник
Единственная проблема, связанная с решением диспетчера учетных данных Windows, заключается в том, что если у вас имеется большое количество поддерживаемых баз данных, у вас должна быть запись для каждой из них, которая обновляется каждый раз при обновлении паролей вашего домена. Для некоторых людей это может быть каждые 30 - 60 дней.
Смехаффи
Этот пост несколько связан.
RBT
@smehaffie вы можете легко использовать сценарии и команду «cmdkey / add» для поддержки ваших паролей - она ​​также обновляется.
Мистер Магу

Ответы:

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.
Даниэль
Есть ли способ имитировать это поведение без командной строки?
Жиль Лезире
1
@ Gilles, вы можете создать командный файл и дважды щелкнуть командный файл, или вы можете использовать эту строку и, возможно, создать ярлык
Аарон Бертран
103

Есть еще один способ, который я сейчас использую в предпочтении 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 Server, работающему в виртуальной машине, с моего рабочего стола, затем добавил необходимые учетные данные и повторил попытку - успешно.

Совет: используйте команду «cmdkey / add» для создания сценария создания и обновления сохраненных учетных данных.

Мистер магу
источник
Интересно! Похоже, это зависит от того, как ваш клиентский компьютер считает, что удаленный компьютер называется, а не от того, как он на самом деле может называться. Я поместил изобретенную запись ("verysillytest.mwardm") в мой файл хоста для IP-адреса (как обычно делают те из нас, у кого есть доступ из-за пределов доменов) и установил учетные данные в имени "verysillytest.mwardm: 1433" . Затем я могу счастливо подключиться (из небольшого приложения под названием Query Express), используя имя хоста или IP-адрес.
mwardm
@mwardm да, поэтому я рекомендую использовать ping или nslookup, так как он скажет вам имя именно так, как вам нужно, включая особенности верхнего / нижнего регистра.
Мистер Магу
Ах, хорошо, "ping -a" не дал мне ничего, и nslookup не (сразу) не работал, потому что я не использовал DNS-серверы домена. Не волнуйтесь, я на самом деле предпочитаю гибкость, когда мне просто нужно знать IP-адрес (и логин) и возможность создавать свое собственное имя!
mwardm
2
Круто, это работает! Мне просто интересно - это должно работать так, или это ошибка или неудачный проект на стороне SQL Server? Microsoft или люди из Microsoft везде рекламируют, что у вас должен быть компьютер, подключенный к домену, иначе невозможно подключиться к SQL Server, который настроен на прием только учетных данных домена.
Давид Ференчи Рогожан
Кстати, я бы сказал, что этот ответ должен быть помечен как принятый, поскольку он кажется реальным решением, а другой ответ больше похож на обходной путь.
Давид Ференчи Рогожан