我在 macOS 上,并尝试nvm
通过 OpenSSH 在 Windows 主机上运行。我在 Windows 遥控器上安装了nvm
via 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 的连接已关闭。”文字。它基本上模拟了手动登录、粘贴命令并退出。