我想从我的笔记本电脑 ( A
) 通过 SSH 连接到 Windows Server ( B
),然后从 powershell 针对 SQL Server ( C
) 运行命令。这三者都在一个 Windows 域中。我正在运行适用于 Windows Server 2019 的内置 openssh 服务器和客户端。
如果我使用密码连接到服务器,B
那么我就可以运行命令Invoke-Sqlcmd
并查询 SQL Server C
。
但是如果我使用 RSA 密钥连接,我将无法再运行命令,因为 SQL Server 会抛出错误,提示我未通过身份验证。尝试了带密码和不带密码的密钥,保存在代理上并以管理员和普通用户身份明确提供。我还能尝试什么?
根据我在互联网上找到的信息,应该可以通过添加 SPN 来解决问题。但我的服务器已经有了 SPN C
。
还有其他线索吗?还是无法使用密钥正确进行身份验证?
答案1
我发现回答。
- 通过密码验证打开的远程会话附加有用户凭据,因此能够以用户身份进行出站身份验证。
- 通过基于密钥的身份验证打开的远程会话没有关联的用户凭据,因此无法以用户身份进行出站身份验证。这是设计使然,并遵守标准 Windows 安全规则。
我希望使用密钥验证进行自动化以避免手动输入密码,但由于标准 Windows OpenSSH 客户端不支持此功能,因此我不得不使用 Plink。