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;
        }

}

ドメインに接続すると、10.0.0.17の代わりにnginxサーバーに接続しようとします。

答え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

関連情報