错误:
ssh_exchange_identification:远程主机关闭连接
提出了许多解决方案,但似乎都不能解决我的问题。
这就是我想要实现的目标:
我有一个服务器 (10.0.0.5) SSH。该服务器具有以下用户及其 shell:
passport , shell=/bin/false
user1, shell=git-shell
user2, shell=git-shell
me, shell=bash
该sshd_config
文件末尾有以下条目:
AllowTcpForwarding no
Match User passport,user1,user2
AllowTcpForwarding true
PermitOpen 10.0.0.5:8080
PermitOpen 10.0.0.5:22
我还启用了公钥认证。目标是禁用来自 SSH 的所有 TCP 转发,并仅允许上述用户在两个端口上进行转发:
- SSH
- a web server
在我的/etc/hosts.allow
和.deny
文件中没有条目。
我在中设置了适当的authorized_keys file
(仅 ssh-rsa...)/home/passport/.ssh/authorized_keys
。
从 Windows 计算机尝试 SSH:
ssh [email protected] -N -L 22:10.0.0.5:22 -L 8080:10.0.0.5:8080
这工作正常,当“我尝试浏览http://127.0.0.1:8080
”时,这意味着我的端口转发工作正常。
现在,我想尝试通过该隧道进行 SSH 并使用“user1”:
ssh -N [email protected]
此刻,我得到:
ssh_exchange_identification:远程主机关闭连接
然而,如果我直接从我的 Windows 机器上使用 SSH,我就可以成功:
ssh -N [email protected]
我不知道为什么它不起作用。
我检查/var/log/auth.log
并观察:
Feb 4 10:28:23 myhost sshd[2097]: debug1: server_input_channel_open: ctype direct-tcpip rchan 257 win 16384 max 16384
Feb 4 10:28:23 myhost sshd[2097]: debug1: server_request_direct_tcpip: originator 0.0.0.0 port 0, target 10.0.0.5 port 22
Feb 4 10:28:23 myhost sshd[2097]: Received request to connect to host 10.0.0.5 port 22, but the request was denied.
Feb 4 10:28:23 myhost sshd[2097]: debug1: server_input_channel_open: failure direct-tcpip
我尝试刷新 iptables-F
并尝试重新启动 sshd,但仍然收到连接关闭错误。
为什么我不能通过隧道 ssh?
我创建“passport”用户的原因是允许用户远程登录我的网络。他们将能够使用 Web 服务器。
现在如果他们想使用 GIT,他们将使用以下内容,例如:
git clone ssh://[email protected]/repos/repo.git
我正在运行 Debian 6,带有 Linux 2.6.32 和 OpenSSH 5.5p1
请指教如何解决我的问题。我尝试了与我的问题标题相同的问题列出的所有解决方案,但无济于事。
答案1
您只能指定一个PermitOpen
指令;如果您想允许多个转发,请在同一行上指定它们并用空格分隔:
PermitOpen 10.0.0.5:8080 10.0.0.5:22
OpenSSH 似乎应用了找到的第一个指令。