通过 NGINX 代理 SSH

通过 NGINX 代理 SSH

我需要通过同一域的 NGINX 代理 SSH。我在端口 80 上设置了一个代理,工作正常。但我需要将端口 22 代理到同一台服务器。

原始配置:

    upstream web {
        least_conn;
        server 10.0.0.4;
}

server {
        access_log /var/log/nginx/web.com combined;
        index index.html index.htm index.php;

        server_name www.web.com web.com;

        location /{
        proxy_pass http://web;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
}

}

我的 22 端口配置如下:

stream {

        upstream ssh {
                server 10.0.0.17:22;
        }

        server {
                listen 22;
                server_name gitlab.web.com;
                proxy_pass ssh;
        }

}

当我连接到域时,它尝试连接 nginx 服务器而不是 10.0.0.17。

答案1

对于通过 Nginx 的 SSH 代理,请为 SSH 服务器使用端口 22 以外的其他端口

# use a different port for SSH client if Ngnix uses
# port 22
Port 8022

或者,如果您想保留 SSH 服务器的端口 22,您可能需要配置 Nginx 配置以使用其他端口

stream {

        upstream ssh {
                server 10.0.0.17:22;
        }

        server {
                listen 8022;
                server_name gitlab.web.com;
                proxy_pass ssh;
        }

}

如果您以这种方式配置,您的 GitLab CE/EE 用户可能需要执行以下操作:

# unless you blocked port 22, users who do Git-over-SSH need to configure
# stuff on their clients instead of doing this.
ssh [email protected] -p 8022

相关内容