Cygwin中出现“Connection closed by ::1”错误

4
我正在尝试使用Cygwin进行SSH连接。我已经按照这里给出的指示进行操作。当我执行ssh localhost命令时,会出现Connection closed by ::1错误。由于我是Unix和Cygwin的新手,我无法弄清楚出了什么问题。请问有人能告诉我为什么会出现这个错误,以及如何解决它吗?
我的Cygwin shell如下所示:
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/Shekhar/.ssh/id_rsa):
/home/Shekhar/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/Shekhar/.ssh/id_rsa.
Your public key has been saved in /home/Shekhar/.ssh/id_rsa.pub.
The key fingerprint is:
85:69:77:cc:fd:21:8a:ce:fe:46:41:ee:c8:e7:3d:7b Shekhar@Shekhar-PC
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|         o + .   |
|        + = +... |
|       . o.+. ...|
|        S.o..   .|
|        oo +     |
|         o+ .    |
|        .  o o E |
|         .o. .+  |
+-----------------+

Shekhar@Shekhar-PC ~
$ cd ~/.ssh/

Shekhar@Shekhar-PC ~/.ssh
$ ls -l
total 10
-rw-r--r-- 1 Shekhar None 1200 Jun 16 19:49 authorized_keys
-rw------- 1 Shekhar None 1675 Jun 20 08:55 id_rsa
-rw-r--r-- 1 Shekhar None  400 Jun 20 08:55 id_rsa.pub
-rw-r--r-- 1 Shekhar None  171 Jun  6 23:28 known_hosts

Shekhar@Shekhar-PC ~/.ssh
$ cat id_rsa.pub >> authorized_keys

Shekhar@Shekhar-PC ~/.ssh
$ ssh localhost
Connection closed by ::1

1
你确定 ::1 上有一个 SSH 服务器在监听吗?如果尝试使用 ssh 127.0.0.1,它是否有效?(也许它仅在你的 IPv4 接口上监听,或者根本没有监听,或者个人防火墙正在阻止它?) - mpontillo
如何检查SSH服务器是否正在监听?我通过控制面板>管理工具>服务启动了cygwin SSH服务。 - Shekhar
@Mike,我尝试了ssh 127.0.0.1,但是出现了相同的错误。连接被127.0.0.1关闭 - Shekhar
测试的一种方法是通过telnet到SSH端口并查看它是否打开。例如,在我的Linux系统上执行telnet localhost 22连接后会打印出SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu7。我猜你甚至无法到达那一步,这意味着SSH服务可能存在问题或者有防火墙干扰。 - mpontillo
@Mike,我的问题已经解决了。我只是卸载了Cygwin,然后重新安装它,现在它工作正常了。 - Shekhar
Mike,请你看一下这个链接- http://stackoverflow.com/questions/11824845/unable-to-ssh-to-localhost-on-cygwin - fixxxer
4个回答

5
我也遇到了这个问题。我的问题是通过ssh-host-config创建cyg_server用户时,没有为其创建home目录,并将其shell设置为/bin/false。因此,我修改了/etc/passwd文件中cyg_server用户的内容,更改了home目录为/home/cyg_server(从/var/empty更改),将shell更改为/bin/bash,并为该用户创建了home目录。然后尝试使用cyg_server用户重新连接,问题解决了。
mkdir /home/cyg_server
vim /etc/passwd
cyg_server:...(bunch of stuff)...:/var/empty:/bin/false

to

cyg_server:...(bunch of stuff)...:/home/cyg_server:/bin/bash

可能cygwin有一个usermod命令或同义词可以更安全地完成此操作。但是我很着急,所以我做了这个。如果有人按照这个步骤,请注意编辑/etc/passwd文件时要非常小心。


+1。完美运行。 - sushain97
我必须执行以下操作来解决Op的问题: chown <USERNAME> /var/log/sshd.log chown -R <USERNAME> /var/empty chown <USERNAME> /etc/ssh* chmod 755 /var/empty chmod 644 /var/log/sshd.log - kakyo
我发现 /var/empty 的所有权被正确设置为 cyg_server:Root。因此,我没有更改 cyg_server 的主目录。相反,我只更改了 shell 从 /bin/false 到 /bin/bash,这样它就完美工作了。另一件事是用户应确保以管理员特权运行 cygwin 批处理文件。非常感谢。 - James Selvakumar
我按照建议使用cyg_server登录,结果非常顺利!谢谢! - Shailendra

3

以防其他人遇到同样的问题。由于在配置ssh时选择了cyg_server作为用户名,因此尝试使用“ssh cyg_server@localhost”命令连接而不是默认的“ssh localhost”。密码可以与配置时提供的相同。


2

将此内容放在这里,以防以后有人遇到同样的问题。我也遇到了同样的问题,重新安装cygwin解决了它...直到我重启电脑。然后我再次遇到了相同的错误。我现在第二次解决了这个问题:在运行ssh-host-config时,我没有使用cygwin建议的“cyg_server”帐户名称,而是输入了我的Windows普通管理员帐户的名称。目前看来似乎可以工作。


-4
我的问题已经解决了。我刚刚卸载并重新安装了cygwin,现在它正常运行了。

1
有人可以解释一下为什么会被踩吗? - Shekhar
1
因为在小问题上重新安装操作系统并不是一个好建议。 - user2286243
请在投票前仔细阅读答案。我重新安装了Cygwin,但没有重新安装操作系统。 - Shekhar
是的,但您重新安装了Cygwin。这不是一个很好的建议。我只是用操作系统举例。 - user2286243

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接