Conéctese a SQL Server con autenticación de Windows en un dominio diferente

74

Estoy tratando de conectarme a un servidor SQL remoto en una VPN en un dominio diferente. Cuando ingreso el nombre del servidor en el servidor SQL y elijo Parámetros de conexión adicionales para agregar algunas cosas adicionales que necesita mi escuela:

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

Obtuve el siguiente error:

Error de inicio de sesion. El inicio de sesión es de un dominio no confiable y no se puede usar con la autenticación de Windows.

fxuser
fuente
El único problema con la solución Windows Credential Manager es que si tiene una gran cantidad de bases de datos que admite, debe tener una entrada para cada una y actualizarlas cada vez que tenga que actualizar sus contraseñas de dominio. Para algunas personas eso podría ser cada 30 a 60 días.
smehaffie
Esta publicación está algo relacionada.
RBT
@smehaffie puede usar fácilmente las secuencias de comandos y el comando "cmdkey / add" para mantener sus contraseñas; también se actualiza.
Señor Magoo

Respuestas:

70

Está intentando pasar las credenciales de Windows en texto sin formato desde la cadena de conexión de una aplicación. Esto simplemente no es cómo funciona la autenticación de Windows, y en gran medida anula el propósito.

Tampoco puede crear el mismo nombre de usuario con la misma contraseña en su propio dominio y esperar que funcione mágicamente. El nombre de dominio sigue siendo parte de la validación: su máquina debe ser parte del dominio o el dominio de la escuela debe confiar en el dominio en el que se encuentra su máquina.

La única solución que conozco es para SSMS, y ese es el runas /netonlytruco descrito en esta respuesta . Esto engaña a Windows para que inicie SSMS como el inicio de sesión que especifique, en lugar del suyo propio (esto no es algo que puede establecer en el cuadro de diálogo Propiedades de conexión de SSMS, es cómo debe iniciar SSMS desde la línea de comando o un acceso directo):

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

Esto le pedirá su contraseña en el dominio remoto. Se mire como se está utilizando sus credenciales locales de Windows, pero no es .

Es posible que también funcione con Visual Studio, pero realmente no lo sé.

Entonces sus opciones son:

  • haga que la universidad le permita unir su máquina al dominio
  • haga que la universidad agregue su dominio como un dominio confiable
  • tener una caja de salto dentro de la VPN que le permite RDP y usar herramientas que se conectan directamente a la máquina de SQL Server
  • usar autenticación SQL
  • prueba el runas /netonlytruco con Visual Studio
  • solo usa el runas /netonlytruco con SSMS
Aaron Bertrand
fuente
La runascosa no funciona con Visual Studio.
Daniel Hutmacher
¿Hay alguna manera de imitar este comportamiento sin el símbolo del sistema?
Gilles Lesire
1
@Gilles puede hacer un archivo por lotes y hacer doble clic en el archivo por lotes, o puede usar esa cadena y crear un acceso directo tal vez
Aaron Bertrand
103

Hay otra forma, que ahora uso con preferencia al runas /netonlymétodo.

Puede agregar las credenciales a su perfil en Windows utilizando el Administrador de credenciales que se encuentra en el panel de control de Windows.

  1. Administrador de credenciales abierto
  2. Haga clic en "Agregar una credencial de Windows"
  3. Rellene el campo "dirección de Internet o de red" con el nombre y el número de puerto de la instancia SQL para la que desea almacenar credenciales.

    Ejemplo: UniServer:1433(1433 es el puerto predeterminado, es posible que necesite un puerto diferente, especialmente si se está conectando a una instancia con nombre)

  4. Rellene el "Nombre de usuario" (no olvide incluir el dominio, por ejemplo MYDOMAIN\MYUSER)
  5. Rellene la "Contraseña"
  6. Haga clic en Aceptar

Si tiene el nombre del servidor, el puerto y los detalles de inicio de sesión correctos, ahora debería poder usar la autenticación de Windows desde la mayoría de las herramientas del cliente, SSMS, Excel, lo que sea. Todos usarán las credenciales almacenadas.

Consejo: A veces necesita usar el FQN para el servidor al agregar las credenciales. por ejemplo UniServer.UniDomain.org:1433, todo depende de los detalles de su red.

Aquí hay una demostración rápida del método: http://youtu.be/WiVBPsqB9b4

Es una captura de pantalla cuando intento (y no puedo) conectarme a un servidor SQL que se ejecuta en una máquina virtual desde mi escritorio, luego agrego las credenciales necesarias e intento nuevamente, con éxito.

Consejo: use el comando "cmdkey / add" para crear y actualizar las credenciales almacenadas en el script.

Señor magoo
fuente
¡Interesante! Parece depender de cómo su máquina cliente cree que se llama la máquina remota en lugar de lo que realmente podría llamarse. He puesto una entrada inventada ("verysillytest.mwardm") en mi archivo de host para la dirección IP (como es habitual en quienes accedemos desde fuera de los dominios) y configuré la credencial en el nombre "verysillytest.mwardm: 1433 ". Entonces puedo conectarme felizmente (desde una pequeña aplicación llamada Query Express) usando el nombre de host o la dirección IP.
mwardm
@mwardm sí, es por eso que recomiendo usar ping o nslookup, ya que le dirá el nombre exactamente como lo necesita, incluyendo detalles en mayúsculas / minúsculas.
Señor Magoo
Ah, bueno, "ping -a" no me dio nada y nslookup no funcionó (inmediatamente) porque no estaba usando los servidores DNS del dominio. ¡No se preocupe, en realidad prefiero la flexibilidad de tener que conocer la dirección IP (y el inicio de sesión) y poder inventar mi propio nombre!
mwardm
2
¡Impresionante, funciona! Solo me pregunto: ¿se supone que funciona así o es un error o un error de diseño en el lado de SQL Server? Microsoft o personas de Microsoft anuncian en todas partes que debe tener una máquina conectada a un dominio, de lo contrario no hay forma de conectarse a SQL Server, que está configurado para aceptar solo las credenciales de dominio.
Dawid Ferenczy Rogožan
Por cierto, diría que esta respuesta debe marcarse como aceptada, ya que parece ser una solución real y la otra respuesta es más como una solución.
Dawid Ferenczy Rogožan