我已经在远程 Arch Linux 服务器上设置了 hosts.allow,如下所示:
sshd: ALL: ALLOW
而 hosts.deny 设置为:
ALL: ALL
我通过 Cygwin 使用 SSH 没有任何问题(通过代理服务器使用 Corkscrew 隧道)。但是,当我在 Cygwin 中打开屏幕并尝试使用 SSH 时,我收到以下错误:
ssh_exchange_identification: Connection closed by remote host
详细输出如下:
$ ssh -v [username]@[remote server]
OpenSSH_5.6p1, OpenSSL 0.9.8o 01 Jun 2010
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug1: Applying options for [remote server]
debug1: Executing proxy command: exec /usr/bin/corkscrew [proxy server] 80 [remote server] 443 ~/.corkscrew-auth
debug1: permanently_drop_suid: 152811
No such file or directory
debug1: identity file /home/[username]/.ssh/id_rsa type -1
debug1: identity file /home/[username]/.ssh/id_rsa-cert type -1
debug1: identity file /home/[username]/.ssh/id_dsa type -1
debug1: identity file /home/[username]/.ssh/id_dsa-cert type -1
ssh_exchange_identification: Connection closed by remote host
我已经尝试从客户端和服务器删除 SSH 密钥,但仍然出现同样的错误。
就像我之前说的,当我不使用屏幕时,SSH 工作正常。但我不明白为什么通过屏幕运行时 SSH 连接会断开。
答案1
我不确定你的hosts.allow
语法是否有效。尝试:
sshd: ALL
答案2
看起来 corkscrew 无法找到配置文件~/.corkscrew-auth
或者/usr/bin/corkscrew
二进制文件本身。
根据 corkscrew 手册页文件~/.corkscrew-auth
应包含帐户信息:username:password
答案3
我仍然不完全确定问题出在哪里(例如 OpenSSH、Corkscrew 还是其他地方),但是在将 Cygwin 更新到所有软件包的最新版本后,问题就消失了。