Stellen Sie eine Verbindung zu SQL Server mit Windows-Authentifizierung in einer anderen Domäne her

74

Ich versuche, eine Verbindung zu einem Remote-SQL-Server über ein VPN in einer anderen Domäne herzustellen. Wenn ich den Servernamen auf dem SQL Server eingebe und Zusätzliche Verbindungsparameter wähle, um zusätzliche Informationen hinzuzufügen, die von meiner Schule benötigt werden:

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

Ich erhalte folgenden Fehler:

Login fehlgeschlagen. Die Anmeldung stammt aus einer nicht vertrauenswürdigen Domäne und kann nicht mit der Windows-Authentifizierung verwendet werden.

fxuser
quelle
Das einzige Problem mit der Windows Credential Manager-Lösung besteht darin, dass Sie, wenn Sie über eine große Anzahl unterstützter Datenbanken verfügen, für jede einen Eintrag benötigen und diese jedes Mal aktualisieren müssen, wenn Sie Ihre Domänenkennwörter aktualisieren müssen. Für manche Leute könnte das alle 30 - 60 Tage sein.
Smehaffie
Dieser Beitrag ist etwas verwandt.
RBT
@smehaffie Sie können einfach Skripte und den Befehl "cmdkey / add" verwenden, um Ihre Passwörter zu verwalten - es wird auch aktualisiert.
Herr Magoo

Antworten:

70

Sie versuchen, Windows-Anmeldeinformationen in Klartext aus der Verbindungszeichenfolge einer Anwendung zu übergeben. So funktioniert die Windows-Authentifizierung einfach nicht und macht den Zweck weitgehend zunichte.

Sie können auch nicht einfach denselben Benutzernamen mit demselben Kennwort in Ihrer eigenen Domain erstellen und erwarten, dass dies auf magische Weise funktioniert. Der Domänenname ist immer noch Teil der Validierung - Ihr Computer muss entweder Teil der Domäne sein, oder die Domäne der Schule muss der Domäne vertrauen, in der sich Ihr Computer befindet.

Die einzige mir bekannte Problemumgehung betrifft SSMS, und das ist der runas /netonlyin dieser Antwort beschriebene Trick . Dadurch wird Windows dazu verleitet, SSMS als die von Ihnen angegebene und nicht als Ihre eigene Anmeldung zu starten. (Dies können Sie nicht im Dialogfeld Verbindungseigenschaften von SSMS festlegen. Sie müssen SSMS über die Befehlszeile oder eine Verknüpfung starten.)

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

Dadurch werden Sie zur Eingabe Ihres Kennworts in der Remotedomäne aufgefordert. Es sieht so aus, als würde es Ihre lokalen Windows-Anmeldeinformationen verwenden. Dies ist jedoch nicht der Fall .

Es ist möglich, dass das auch mit Visual Studio funktioniert, aber ich weiß es wirklich nicht.

Ihre Möglichkeiten sind also:

  • Lassen Sie die Universität Ihren Computer der Domain hinzufügen
  • Lassen Sie die Universität Ihre Domain als vertrauenswürdige Domain hinzufügen
  • Im VPN befindet sich eine Jump-Box, über die Sie RDP ausführen und Tools verwenden können, die eine direkte Verbindung zum SQL Server-Computer herstellen
  • Verwenden Sie die SQL-Authentifizierung
  • Probieren Sie den runas /netonlyTrick mit Visual Studio
  • Verwenden Sie einfach den runas /netonlyTrick mit SSMS
Aaron Bertrand
quelle
Das runasDing funktioniert mit Visual Studio.
Daniel Hutmacher
Gibt es eine Möglichkeit, dieses Verhalten ohne die Eingabeaufforderung nachzuahmen?
Gilles Lesire
1
@ Gilles Sie können eine Batch-Datei erstellen und auf die Batch-Datei doppelklicken, oder Sie können diese Zeichenfolge verwenden und eine Verknüpfung erstellen
Aaron Bertrand
103

Es gibt einen anderen Weg, den ich jetzt der runas /netonlyMethode vorstelle.

Sie können die Anmeldeinformationen zu Ihrem Profil in Windows hinzufügen, indem Sie den Anmeldeinformations-Manager in der Windows-Systemsteuerung verwenden.

  1. Öffnen Sie den Anmeldeinformations-Manager
  2. Klicken Sie auf "Windows-Anmeldeinformationen hinzufügen".
  3. Füllen Sie das Feld "Internet- oder Netzwerkadresse" mit dem Namen und der Portnummer der SQL-Instanz aus, für die Sie Anmeldeinformationen speichern möchten.

    Beispiel: UniServer:1433(1433 ist der Standardport. Möglicherweise benötigen Sie einen anderen Port, insbesondere, wenn Sie eine Verbindung zu einer benannten Instanz herstellen.)

  4. Füllen Sie den "Benutzernamen" aus (vergessen Sie nicht, die Domain anzugeben, zB MYDOMAIN\MYUSER)
  5. Fülle das "Passwort" aus
  6. OK klicken

Wenn Sie den Servernamen, den Port und die Anmeldedaten korrekt angegeben haben, sollten Sie jetzt in der Lage sein, die Windows-Authentifizierung mit den meisten Client-Tools, SSMS, Excel usw. zu verwenden. Sie alle verwenden die gespeicherten Anmeldeinformationen.

Tipp: Manchmal müssen Sie den FQN für den Server verwenden, wenn Sie die Anmeldeinformationen hinzufügen. ZB UniServer.UniDomain.org:1433hängt alles von Ihren Netzwerkspezifikationen ab.

Hier ist eine kurze Demo der Methode: http://youtu.be/WiVBPsqB9b4

Es ist ein Screenshot von mir, wie ich versuche (und versuche), von meinem Desktop aus eine Verbindung zu einem SQL Server herzustellen, die erforderlichen Anmeldeinformationen hinzuzufügen und es erneut zu versuchen - erfolgreich.

Tipp: Verwenden Sie den Befehl "cmdkey / add", um ein Skript zum Erstellen und Aktualisieren gespeicherter Anmeldeinformationen zu erstellen.

Herr Magoo
quelle
Interessant! Es scheint davon abzuhängen, wie Ihr Client-Computer den Remotecomputer nennt, anstatt wie er tatsächlich heißt. Ich habe in meine Hostdatei einen erfundenen Eintrag ("verysillytest.mwardm") für die IP-Adresse eingefügt (wie es diejenigen von uns tun, die von außerhalb von Domains zugreifen) und den Berechtigungsnachweis im Namen "verysillytest.mwardm" eingerichtet: 1433 ". Ich kann mich dann glücklich verbinden (von einer kleinen App namens Query Express), indem ich entweder den Hostnamen oder die IP-Adresse verwende.
Mwardm
@mwardm ja, deshalb empfehle ich die Verwendung von ping oder nslookup, da der Name genau so angegeben wird, wie Sie ihn benötigen, einschließlich der Groß- / Kleinschreibung.
Herr Magoo
Na ja, "ping -a" hat mir nichts gegeben und nslookup hat (sofort) nicht funktioniert, weil ich die DNS-Server der Domain nicht benutzt habe. Keine Sorge, ich bevorzuge die Flexibilität, nur die IP-Adresse (und das Login) zu kennen und meinen eigenen Namen zu finden!
Mwardm
2
Super, es funktioniert! Ich frage mich nur - soll es so funktionieren oder ist es ein Fehler oder ein Designfehler auf der Seite von SQL Server? Microsoft oder Mitarbeiter von Microsoft machen überall bekannt, dass ein Computer mit Domänenverbindung erforderlich ist. Andernfalls kann keine Verbindung zu SQL Server hergestellt werden, bei dem nur die Domänenanmeldeinformationen akzeptiert werden.
Dawid Ferenczy Rogožan
Übrigens würde ich sagen, dass diese Antwort als akzeptiert markiert werden sollte, da sie eine echte Lösung zu sein scheint und die andere Antwort eher einer Problemumgehung gleicht.
Dawid Ferenczy Rogožan