ginuerzh / gost

GO Simple Tunnel - a simple tunnel written in golang
MIT License
15.49k stars 2.43k forks source link

forward+ssh远程端口转发断开无法重连问题 #790

Closed imyhxy closed 2 years ago

imyhxy commented 2 years ago

你好,非常喜欢Gost这个代理软件,平时会使用它做内网穿透。

版本:2.11.1 系统:Ubuntu 20.04/18.04

我有一台内网机器A和一台公网服务器B,想通过B访问A,因此在A上通过远程端口转发将B的2222端口转发到A的22上,那样通过B的2222端口就可以登陆A了,配置如下:

{
    "Debug": true,
    "Retries": 7,
    "ServeNodes": [
        ":8089"
    ],
    "Routes": [
        {
            "Retries": 7,
            "ServeNodes": [
                "rtcp://127.0.0.1:2222/127.0.0.1:22"
            ],
            "ChainNodes": [
                "forward+ssh://user@172.0.8.40:22?ssh_key=password"
            ]
        }
}

但是一旦发生了网络状态切换,比如有线换WiFi,然后再换回有线,就容易发生不能重连的情况,需要手动重启服务才可以,ssh连接报以下错误:

kex_exchange_identification: Connection closed by remote host

请问是不是我的配置有问题,或者需要修改什么。

imyhxy commented 2 years ago

或者经过长时间后也会出现远程端口转发失效的情况,但是在同一个配置文件中的本地端口转发却是一直有效的。

imyhxy commented 2 years ago

今天查看了在B机器上的Gost日志,它持续输出以下信息:

Feb 25 08:57:55 G3 gost[257789]: 2022/02/25 08:57:55 forward.go:416: [rtcp] accept error: ssh-rtcp: connection is closed; retrying in 6s
imyhxy commented 2 years ago

我总共创建了5个ssh远程端口转发配置,一个auto远程端口转发配置,两个tcp本地端口转发配置,在master分支上编译出来的gost在启动的时候总有一些远程ssh远程端口转发无法建立成功,一开始就报:

Feb 25 09:28:38 G3 gost[378987]: 2022/02/25 09:28:38 forward.go:416: [rtcp] accept error: ssh-rtcp: connection is closed; retrying in 6s
imyhxy commented 2 years ago

找到一个原因是因为服务器A的远程端口转发ssh进程没有退出,服务器A上的端口一致被一个断开链接的进程占用了,客户端无法建立新的远程端口转发,但是不知道这个问题要怎么解决。

imyhxy commented 2 years ago

通过配置服务器的/etc/ssh/sshd_config解决。

viponedream commented 2 years ago

怎么解决的,大佬。

imyhxy commented 2 years ago

@viponedream 编辑服务器的/etc/ssh/sshd_config,更改以下配置,然后重启ssh服务

ClientAliveInterval 30
ClientAliveCountMax 3