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

관련 정보