如何通过 SSH 为 Windows 运行“nvm”?

如何通过 SSH 为 Windows 运行“nvm”?

我在 macOS 上,并尝试nvm通过 OpenSSH 在 Windows 主机上运行。我在 Windows 遥控器上安装了nvmvia scoop install nvm。环境变量已设置并where nvm正确解析,但尝试nvm通过访问ssh让我卡住了,所以我只能取消(什么也没发生):

> ssh windev where nvm
C:\Users\mbx\scoop\apps\nvm\current\nvm.exe
> ssh windev nvm -v
^C
> ssh windev cmd /c nvm -v
^C
> ssh windev "cmd /c nvm"
^C

当我通过连接ssh windev并运行nvm -v时,它可以工作。我目前的猜测是,当我尝试立即运行远程命令时,Windows 用户环境变量未设置,因为用户登录仅在之后发生?它应该给出一个错误,但它表现得好像我的目的地无效,但这并不能解释像ssh windev echo test预期的那样工作。

我注意到我还必须注册我的公钥%ALLUSERSPROFILE%\ssh\administrators_authorized_keys,以使我的别名目标无需密码提示即可工作。因此,这可能与此有关,但在 Windows 上通常是必要的,以使无密码提示工作,因为我的用户属于管理员组。

ssh windev echo %PATH%还打印:

C:\ProgramData\scoop\shims;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\ProgramData\chocolatey\bin;C:\Program Files\dotnet\;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps;C:\Users\mbx\scoop\apps\python\current\Scripts;C:\Users\mbx\scoop\apps\python\current;C:\Users\mbx\scoop\apps\nvm\current;C:\Users\mbx\scoop\apps\nvm\current\nodejs\nodejs;C:\Users\mbx\scoop\shims;C:\Users\mbx\AppData\Local\Microsoft\WindowsApps;C:\Users\mbx\.dotnet\tools;C:\git-sdk-64\mingw64\bin;C:\git-sdk-64\mingw32\bin;

LGTM,这是怎么回事?如何解决这个问题?

答案1

nvm除了确实通过 找到之外,我没有其他完整的解释ssh windev nvm -v,但它卡住了,因为缺少任何东西,只有一个交互式 shell。与 unix NVM 相反,NVM for Windows 不需要任何手动环境设置,但nvm无论如何登录 shell 中缺少一些需要的东西。

解决方案是通过 强制使用交互式 shell ssh -t windev nvm -v。此方法有效并按预期返回版本。请注意,这将导致在执行结束时输出“与 XX.XX.XX.XX 的连接已关闭。”文字。它基本上模拟了手动登录、粘贴命令并退出。

相关内容