2

Any idea what's wrong here?

>ver

Microsoft Windows [Version 10.0.18363.476]

>echo %CVS_RSH%
ssh

>echo %CVSROOT%
:ext:foo@bar.org:/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

>

Expected behaviour is that I'd be asked to provide the password for my account on the SSH server (I don't have SSH keys set up). As I'm not asked for the password, it seems that CVS doesn't find the SSH executable in the first place.

1 Answers1

3

I figured out what was wrong. The problem was that I used a 32-bit CVS executable and a 64-bit SSH executable.

A 64-bit program, such as CMD.EXE, needs to run C:\Windows\System32\OpenSSH\ssh.exe. On the other hand, a 32-bit program needs to run C:\Windows\Sysnative\OpenSSH\ssh.exe because WoW64 apparently changes some directory names. The PATH environmental variable only contains C:\Windows\System32\OpenSSH but not C:\Windows\Sysnative\OpenSSH, so a 32-bit program must use a full path while a 64-bit program only needs the name of the executable.

I solved it by setting the CVS_RSH environmental variable to the full path, C:\Windows\Sysnative\OpenSSH\ssh.exe.