5

我们使用 kerberos 身份验证连接到我们的本地计算环境。我想使用 Visual Studio Code Remote 直接在该服务器上进行开发。根据vscode 远程文档中的这一部分,似乎可以使用基于密码的身份验证,这对我有用,但如果我可以使用现有的 kerberos 身份验证,而不是每次都必须输入密码,那就太好了启动 vscode 会话。

我试过搜索上面的文档,但我不知道是否支持 kerberos。我想知道我是否应该恭敬地在问题跟踪器上提出问题。

4

7 回答 7

6

从 2020 年 3 月开始更新。

我使用简单的 PuTTY (plink.exe) 使用这些简单的步骤从 VsCode 连接到 kerberos。

  1. 在 PuTTY 中定义一个会话,该会话打开一个 ssh shell 到您的远程机器,将其保存为remote.
  2. 使用以下内容创建“C:\Users\< youruser >\ssh.bat”。你需要 echo 来愚弄 VsCode 它是 OpenSSH 客户端。
    echo OpenSSH
    SET mypath=%~dp0
    powershell %mypath%ssh.ps1 %*
    
    1. 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

理论上你可以用批处理语言编写它,但我不想受苦。

  1. 将 VsCode 中的“remote.SSH.path”设置设置为您的ssh.bat路径。
  2. 最后,在 vscode 中添加 ssh 主机配置,并使用会话名称作为主机:
 Host remote
     HostName remote
     User <you ssh user> 
于 2020-03-20T19:32:33.120 回答
1

我对@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

于 2020-09-01T23:39:43.890 回答
1

目前这是不可能的。有一个关于此的功能请求已关闭,因为它不会在可预见的将来实施。

于 2019-06-13T18:14:11.117 回答
0

@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
于 2021-08-13T22:59:00.677 回答
0

我会评论罗马的答案,但似乎我没有足够的声誉。

我按照他的步骤进行,除了我将 plink.exe 路径放置为“remote.SSH.path”而不是“ssh.bat”。我的 plink.exe 路径只是“C:\Program Files\PuTTY\plink.exe”。

我尝试了多种方法,迄今为止,这是唯一对我有用的方法。

于 2020-04-03T19:52:48.880 回答
0

如果您有适用于 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 %*
于 2019-06-26T22:02:01.883 回答
0

我为 plink.exe写了一个非常小的包装器。

(它只是用 openssl 伪造版本字符串并删除不支持的 '-T' 选项。)

我不使用 kerberos,但它可能有助于设置aviso's answer

请试一试。

于 2019-10-23T12:43:16.623 回答