我在 VS 代码中安装了 Remote-SSH 插件。我能够连接到使用密钥加密登录的服务器。这包括使用 Windows 10 ssh-agent,如下所述:
https://code.visualstudio.com/docs/remote/troubleshooting#_setting-up-the-ssh-agent
# Make sure you're running as an Administrator
Set-Service ssh-agent -StartupType Automatic
Start-Service ssh-agent
Get-Service ssh-agent
重启后,我重新打开 VS Code,却发现我无需输入密码就能重新登录服务器。对我来说,这太令人不安了。我关机并重启——还是一样。
我对代理的理解是,您在会话开始时进行一次身份验证,并且您的密码应该保存(加密)在内存中,并且在程序关闭后不应继续存在;就像 PuTTY、MobaXterm 以及 Linux 或 Mac 中的任何终端的运行方式一样。
我立即开始咒骂 Windows 开发人员太愚蠢了,嘟囔着 VS 代码、WSL、windows 的 open-ssh 是吸引开发人员的好尝试,但再次彻底失败了。……但也许我遗漏了什么或者我的理解不正确?
显而易见的是,如果您使用密码保护私钥,您不会希望该密码保留下来,因为这首先违背了密码的整个目的。如果我的客户端受到威胁,我的服务器也会受到威胁。如果他们从不想输入密码,为什么不直接创建没有密码的私钥呢?我猜如果 sshd 需要两者,而这个人很懒的话……?
8 小时后,我回到电脑前并打开电源,非常好奇地想看看代理是否还保存着我的密码和密钥。我打开 VS 代码连接到我的远程服务器,并收到以下错误:
警告:代理返回不同的签名类型 ssh-rsa(预期为 rsa-sha2-512)
mkdir:无法创建目录“/home/myname/.vscode-server”:权限被拒绝
bash:第 48 行:/home/myname/.vscode-server/bin/6129338/vscode-remote-lock。:没有此文件或目录 flock:99:安装已在进行中...错误的文件描述符 flock:99:错误的文件描述符 flock:99:错误的文件描述符
“安装”终端命令完成收到安装输出:flock:99:错误的文件描述符无法从服务器输出解析远程端口:flock:99:错误的文件描述符
(看起来像一个十六进制数,但我将其删除了,因为我不确定我在这里处理的是什么。)
看起来有一个手动修复:https://github.com/PowerShell/Win32-OpenSSH/issues/1263但我现在甚至不确定我是否信任 Windows(以前我并不信任)。
我的密钥怎么会在重启后继续存在?是不是因为 Windows 10 Cortana 启动“功能”太糟糕了,它会重新打开所有打开的程序?我还没能弄清楚如何关闭它,但我讨厌它。我猜想要做到这一点,Windows 必须将内存转储到磁盘上,以便在启动时可用?这是否意味着我的密码存储在磁盘上?
请告诉我我错了。