我正在尝试使用 ssh 隧道从我的办公室机器到我的家用机器,但当我尝试使用它时出现错误。
我正在做的是像这样启动一个 shell:
ssh -gL 12345:my.home.domain:22 my.home.domain
这给了我一个合适的 shell,没有问题。我通常会通过这台办公室机器 ssh 到我家里的机器,如下所示:
ssh -p 12345 127.0.0.1
对我来说,这种方法一直都有效,直到上周,我在家用机器上设置了一个新系统(从 Ubuntu 切换到 Debian)。现在我收到一个错误。我仍然可以打开我的初始 ssh 连接,但当我尝试使用该隧道时,我(在办公室机器上)收到此错误:
ssh_exchange_identification: Connection closed by remote host
此外,当发生这种情况时,我已设置隧道的开放外壳会向其吐出以下行:
channel 3: open failed: connect failed: Connection timed out
这时,我不知所措。如果需要更多信息,我很乐意发布。
============= 进一步说 ===============
经过进一步的尝试,我发现当我尝试通过各种端口进行 telnet 连接时,服务器(也就是我的家用机器)会给出不同的响应。如果我尝试:
telnet my.home.domain 22
我得到了这个:
Trying <my ip address>...
Connected to <my domain>.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.5p1 Debian-6+squeeze2
这正是我所期望的。设置隧道后,然后远程登录到隧道,我看到了以下响应:
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
============== 而且还有 ===================
按照保加利亚的建议,下面是使用 -v 选项的客户端机器的输出:
ssh -vp 24600 127.0.0.1 OpenSSH_5.9p1 Debian-5ubuntu1,OpenSSL 1.0.1 2012 年 3 月 14 日 debug1:读取配置数据 /etc/ssh/ssh_config debug1:/etc/ssh/ssh_config 第 19 行:应用选项 * debug1:连接到127.0.0.1 [127.0.0.1] 端口 24600。 debug1:连接已建立。 debug1:身份文件/home/jacob/.ssh/id_rsa 类型-1 debug1:身份文件/home/jacob/.ssh/id_rsa-cert 类型-1 debug1:身份文件/home/jacob/.ssh/id_dsa 类型 -1 debug1:身份文件/home/jacob/.ssh/id_dsa-cert 类型-1 debug1:身份文件/home/jacob/.ssh/id_ecdsa 类型 -1 debug1:身份文件/home/jacob/.ssh/id_ecdsa-cert 类型 -1 ssh_exchange_identification:远程主机关闭连接
答案1
也许如果你有超过 10 个 ssh 会话等待输入密码,你就会遇到这种错误,我记得那是最近的 ssh 错误,如果你想验证这一点,请使用下面的命令
for i in {1..15};do ssh -fNt [email protected] & >/dev/null ;done
答案2
最近安装时也发生过类似的事情。在这种情况下,/etc/hosts.deny 存在,并且没有明确拒绝访问的设置,因此情况似乎类似。必须修改 /etc/hosts.allow 以添加类似以下内容:
sshd: 192.168.127.0/255.255.255.128
IP 详细信息需要根据您的需要进行调整,或者ALL
如果不担心允许从任何地方使用 ssh,则可以将其替换为。
完成更改后,停止并重新启动 sshd。
以下问题的赞同答案提供了更多示例。
这是其他人的证词,将错误信息与解决方案联系起来。
答案3
我遇到了同样的问题,最终通过纠正以下内容解决了该问题/etc/network/interfaces
:
auto eth0
iface eth0 inet static
或者
auto eth0
iface eth0 inet dhcp
如果没有该配置,我将永远无法获得与 ssh 隧道的反向连接。
答案4
在我的 Linux Salix 14.0(Slackware 14.0)中,解决方案很简单。
问题是脚本 /etc/rc.d/rc.sshd 没有执行权限。
只是chmod +x /etc/rc.d/rc.sshd
为了在启动时运行该脚本。
此脚本执行 sshd-> /usr/local/sbin/sshd (SSH 守护进程)