我们使用 kerberos 身份验证连接到我们的本地计算环境。我想使用 Visual Studio Code Remote 直接在该服务器上进行开发。根据vscode 远程文档中的这一部分,似乎可以使用基于密码的身份验证,这对我有用,但如果我可以使用现有的 kerberos 身份验证,而不是每次都必须输入密码,那就太好了启动 vscode 会话。
我试过搜索上面的文档,但我不知道是否支持 kerberos。我想知道我是否应该恭敬地在问题跟踪器上提出问题。
我使用简单的 PuTTY (plink.exe) 使用这些简单的步骤从 VsCode 连接到 kerberos。
remote
.echo OpenSSH
SET mypath=%~dp0
powershell %mypath%ssh.ps1 %*
ssh.ps1
使用以下内容在同一文件夹中创建 powershell 脚本:$ArgArray = [System.Collections.ArrayList]$Args
$ind = $ArgArray.IndexOf("-F")
if ($ind -ge 0) {
$ArgArray.RemoveAt($ind)
$ArgArray.RemoveAt($ind)
}
Write-Host $ArgArray
& 'C:\Program Files\PuTTY\plink.exe' $ArgArray
理论上你可以用批处理语言编写它,但我不想受苦。
ssh.bat
路径。 Host remote
HostName remote
User <you ssh user>
我对@Roman 的批处理脚本的调整
@echo off
for %%x in (%*) do (
REM Handle -V
IF "%%x" == "-V" GOTO :version
REM Handle vscode remote as special for plink only
IF "%%x" == "remote" GOTO :plink
)
REM use the built in ssh by default
GOTO :default_ssh
:version
echo OpenSSH
GOTO :eof
:plink
powershell -NoProfile -ExecutionPolicy Bypass %~dp0ssh.ps1 %*
GOTO :eof
:default_ssh
ssh.exe %*
GOTO :eof
它允许您仅将 plink 用于 vscode“远程”服务器名称(我有我的理由),因此除非您选择主机名,否则一切正常remote
目前这是不可能的。有一个关于此的功能请求已关闭,因为它不会在可预见的将来实施。
@Roman's 和 @Andy'sssh.bat
脚本的另一个 tweek 对我有用;我指定了几个使用 plink 的主机。
@echo off
if %1 == -V GOTO :version
if %4 == "myFirst.remoteHost.address" GOTO :plink
if %4 == "mySecond.remoteHost.address" GOTO :plink
if %4 == "myThird.remoteHost.address" GOTO :plink
REM use the built in ssh by default
GOTO :default_ssh
:version
echo OpenSSH
GOTO :eof
:plink
powershell -NoProfile -ExecutionPolicy Bypass %~dp0ssh.ps1 %*
GOTO :eof
:default_ssh
ssh.exe %*
GOTO :eof
我会评论罗马的答案,但似乎我没有足够的声誉。
我按照他的步骤进行,除了我将 plink.exe 路径放置为“remote.SSH.path”而不是“ssh.bat”。我的 plink.exe 路径只是“C:\Program Files\PuTTY\plink.exe”。
我尝试了多种方法,迄今为止,这是唯一对我有用的方法。
如果您有适用于 Windows 的 Kerberos 集成 SSH 客户端,它应该可以工作。我不确定适用于 Windows 10 / Server 2019 的 Microsoft openSSH 是否集成了 Kerberos。Git for Windows 附带的不是。
如果你有一个支持 Kerberos 的 PuTTY 版本,你可以做一个小技巧来使用 plink。
这与 6 月的版本中断了
创建文件C:\Program Files\Microsoft VS Code\bin\ssh.bat 如果 VScode 安装在您的主目录中,文件位置会有所不同。将以下内容放入文件中。调整 PuTTY 目录的 plink 路径。
"C:\Program Files (x86)\Centrify\Centrify PuTTY\plink.exe" -ssh -K %*
我为 plink.exe写了一个非常小的包装器。
(它只是用 openssl 伪造版本字符串并删除不支持的 '-T' 选项。)
我不使用 kerberos,但它可能有助于设置aviso's answer。
请试一试。