Rez*_*eza 2 database windows kerberos r psexec
请考虑以下情形:
我们有以下R脚本(DB.r):
lib.directory = "D:\\RTest"
install.packages("RODBC", repos = "http://cran.us.r-project.org", lib = lib.directory)
library(RODBC, lib.loc = lib.directory)
db.string <- "driver={ODBC Driver 13 for SQL Server};server=DBServer;database=Databse1;trusted_connection=Yes;"
db.channel <- odbcDriverConnect(db.string)
close(db.channel)
Run Code Online (Sandbox Code Playgroud)
Server1使用以下代码在R Server上远程执行R脚本:
PsExec.exe \\RServer "C:\Program Files\R\R-3.4.3\bin\Rscript.exe" "D:\RTest\DB.r"
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
[RODBC] ERROR: state 28000, code 18456, message [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
Run Code Online (Sandbox Code Playgroud)
如何在不发送用户名和密码作为PsExec的一部分的情况下解决此错误?
我们愿意使用任何替代方法来取代PsExec.
问题不在于你的代码.你会看到经典的kerberos "双跳"问题.当您使用集成Windows身份验证(也称为iwa)登录工作站时,Server1知道您的身份,但RServer不知道您的身份,因为从Server1传递给它的内容不是您的身份令牌,而是机器帐户凭据Server1(本地系统).由于可能不允许匿名访问RServer,因此连接失败:Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
在这种情况下,RServer基本上是"Server2",如下面的屏幕截图所示.从您的客户端工作站的角度来看,它距离您是第二跳.
要使其工作,您需要在Server1上配置Kerberos委派,以便能够将任何身份令牌传递给RServer,以便连接成功.请注意,此标识令牌不是用户名或密码,而是Kerberos票证.您在运行该进程的帐户上配置Kerberos委派,该进程将启动从Server1到RServer的连接.该帐户需要有一个spn.阅读本文中的步骤以了解此问题以及如何配置SPN: 了解Kerberos Double Hop
进一步参考:
SQL Server在Windows应用程序中返回错误"用户登录失败'NT AUTHORITY\ANONYMOUS LOGON'."
用户'NT AUTHORITY\ANONYMOUS LOGON'的Web App登录失败
| 归档时间: |
|
| 查看次数: |
2364 次 |
| 最近记录: |