![cygwin(win10)上的 ssh:read_passphrase:无法打开 /dev/tty:](https://linux22.com/image/722162/cygwin%EF%BC%88win10%EF%BC%89%E4%B8%8A%E7%9A%84%20ssh%EF%BC%9Aread_passphrase%EF%BC%9A%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80%20%2Fdev%2Ftty%EF%BC%9A.png)
经过多年的稳定登录后,最近在 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.
特殊文件 /dev/tty 在那里:
% ls -la /dev/tty
crw-rw-rw- 1 jpmattia None 5, 0 May 22 15:04 /dev/tty
我更新了 Cygwin 以确保所有二进制文件都是最新的。Windows 也于本周早些时候进行了更新。
我有点困惑,不知道到底发生了什么。我欣然接受了线索。
答案1
记录我的解决方案,以防其他人遇到问题:看来,Windows 版本的 OpenSSH 是在 2018 年春季更新中引入的,它被调用来代替 Cygwin 的 ssh。(参见例如https://www.zdnet.com/article/openssh-arrives-in-windows-10-spring-update/)
% which ssh
/cygdrive/c/WINDOWS/System32/OpenSSH/ssh
ssh 突然出现问题的原因是 cygwin PATH 中的 /cygdrive/c/WINDOWS/System32 位于 /usr/bin/ 之前。或者至少我的是这样的。
因此,通过明确调用 /usr/bin/ssh 可以解决问题。(重新排序 PATH 也是一种可行的解决方案,但不适合我的环境。)
答案2
如果是全新安装的 cygwin 并遇到同样的问题,请确保在安装过程中选择 openssh 包
Windows 10 自带的 ssh 客户端只能通过 cmd.exe 使用,而不能通过 cygwin 终端使用