![CVS 未找到 SSH](https://linux22.com/image/1618925/CVS%20%E6%9C%AA%E6%89%BE%E5%88%B0%20SSH.png)
知道这里是什么问题吗?
>ver
Microsoft Windows [Version 10.0.18363.476]
>echo %CVS_RSH%
ssh
>echo %CVSROOT%
:ext:[email protected]:/xyz
>ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
[-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
[-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
[-i identity_file] [-J [user@]host[:port]] [-L address]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-Q query_option] [-R address] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] destination [command]
>cvs co foo
cvs [checkout aborted]: cannot start server via rsh: No such file or directory
>
预期的行为是要求我提供 SSH 服务器上的帐户密码(我没有设置 SSH 密钥)。由于没有要求我输入密码,因此 CVS 似乎首先找不到 SSH 可执行文件。
答案1
我弄清楚了问题出在哪里。问题在于我使用了 32 位 CVS 可执行文件和 64 位 SSH 可执行文件。
64 位程序(例如 CMD.EXE)需要运行 C:\Windows\System32\OpenSSH\ssh.exe。另一方面,32 位程序需要运行 C:\Windows\Sysnative\OpenSSH\ssh.exe,因为 WoW64 显然会更改一些目录名称。PATH 环境变量仅包含 C:\Windows\System32\OpenSSH,而不包含 C:\Windows\Sysnative\OpenSSH,因此 32 位程序必须使用完整路径,而 64 位程序只需要可执行文件的名称。
我通过将 CVS_RSH 环境变量设置为完整路径 C:\Windows\Sysnative\OpenSSH\ssh.exe 解决了这个问题。