cygwin (win10) 上的 ssh: read_passphrase: 无法打开 /dev/tty:

JP *_*tia 9 ssh cygwin

经过多年的稳定登录后,在 Windows 10 下在 cygwin 上执行 ssh 最近开始失败。来自 Xwindows 的 mintty 下 ssh 的相关输出:

%  ssh -tt -vvv <user@host>
debug3: Failed to open file:C:\\ProgramData\\ssh/ssh_known_hosts error:2
debug3: Failed to open file:C:\\ProgramData\\ssh/ssh_known_hosts2 error:2
debug3: failed to open file:/dev/tty error:3
debug1: read_passphrase: can't open /dev/tty: No such file or directory
debug3: spawning /usr/X11R6/bin/ssh-askpass
CreateProcessW failed error:2
ssh_askpass: posix_spawn: No such file or directory
Host key verification failed.
Run Code Online (Sandbox Code Playgroud)

特殊文件 /dev/tty 在那里:

% ls -la /dev/tty
crw-rw-rw- 1 jpmattia None 5, 0 May 22 15:04 /dev/tty
Run Code Online (Sandbox Code Playgroud)

我更新了 Cygwin 以确保所有二进制文件都是最新的。本周早些时候,Windows 也进行了自我更新。

我对可能发生的事情感到有些困惑。线索感激地接受。

JP *_*tia 10

记录我的解决方案,以防其他人遇到问题:似乎在 2018 年春季更新中引入了 Windows 版本的 OpenSSH,并且正在调用它而不是 Cygwin 的 ssh。(参见例如https://www.zdnet.com/article/openssh-arrives-in-windows-10-spring-update/

% which ssh
/cygdrive/c/WINDOWS/System32/OpenSSH/ssh
Run Code Online (Sandbox Code Playgroud)

ssh突然出现问题的原因是cygwin PATH在/usr/bin/之前有/cygdrive/c/WINDOWS/System32。或者至少,我的做到了。

所以问题是通过显式调用 /usr/bin/ssh 来解决的。(重新排序 PATH 也是一种可能的解决方案,但不适用于我的环境。)

  • 我全新安装的 Cygwin 中 /usr/bin 不包含 `ssh` :( (2认同)
  • Cygwin 有一个 openssh 包,必须安装它才能获得 ssh 客户端和 ssh 客户端工具。 (2认同)
  • 正如其他评论所暗示的那样,您还必须安装 `openssh`,因为它在默认情况下 ** 未** 安装。 (2认同)
  • 如果您安装 openssh(通过重新运行 cygwin 安装程序并选择 openssh 软件包),“which ssh”命令应切换为显示“usr/bin/ssh”而不是“cygdrive/c/WINDOWS/...”(没有任何额外的手动路径重新排序) (2认同)