Windows7本地到Debian服务器反向隧道搭建失败求助
反向隧道连接失败的排查与解决方法
问题场景
我正尝试从Windows 7本地主机到Debian远程服务器搭建反向隧道,本地执行的命令是:
plink.exe -R 12345:localhost:22 username@remoteServer.com
但在远程服务器回连本地时出现错误,执行的命令及报错信息如下:
root@remoteServer:~# ssh -v -p 12345 127.0.0.1 OpenSSH_6.0p1 Debian-4, OpenSSL 1.0.1e 11 Feb 2013 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: Connecting to 127.0.0.1 [127.0.0.1] port 1234...
(注:从报错信息能看到你实际连接的是1234端口,但反向隧道监听的是12345,这大概率是第一个要修正的问题)
排查与解决步骤
1. 先修正端口匹配问题
你的plink命令明确将远程12345端口映射到本地22端口,但远程执行ssh时误写了端口号。先把远程命令改成:
ssh -v -p 12345 127.0.0.1
如果只是手滑输错端口,改完后应该能正常连接。
2. 检查远程服务器的SSH转发配置
如果端口改对后还是失败,需要确认Debian服务器的sshd是否允许反向隧道:
- 编辑sshd配置文件:
vi /etc/ssh/sshd_config - 确保以下配置项正确:
AllowTcpForwarding yes:必须开启TCP转发功能GatewayPorts yes:允许隧道绑定到非localhost的地址(如果只需要远程服务器自身访问隧道,可设为clientspecified)
- 重启sshd服务:Debian 7及以下用
service ssh restart,新版本用systemctl restart sshd
3. 确保plink连接保持活跃
plink连接可能因为超时或终端交互问题断开,导致隧道失效:
- 可以在plink命令中添加
-N参数,只建立隧道不打开shell,减少资源占用:
plink.exe -N -R 12345:localhost:22 username@remoteServer.com
- 或者添加
-T禁用伪终端,避免交互问题导致连接中断:
plink.exe -T -R 12345:localhost:22 username@remoteServer.com
4. 检查本地Windows防火墙设置
确认Windows 7的防火墙允许SSH(22端口)的入站连接,或者允许plink.exe的网络访问权限,否则远程通过隧道连接时会被本地防火墙拦截。
5. 验证隧道是否成功建立
在远程服务器上执行以下命令,查看12345端口是否被sshd进程监听:
netstat -tulpn | grep 12345
如果输出类似tcp 0 0 127.0.0.1:12345 0.0.0.0:* LISTEN 1234/sshd,说明隧道已经成功建立,此时再尝试ssh连接即可正常访问。
内容的提问来源于stack exchange,提问作者user3013157
相关产品推荐
相关产品推荐

