Nginx 作为 SSH 网关?

Nginx 作为 SSH 网关?

我有一台通过 LXD 为其他系统提供服务的服务器,使用 Nginx 作为反向代理通过 HTTP 访问它们。

现在我想将其中一个的 shell 访问权限授予朋友。事实上,我希望能够直接通过 SSH 进入 LXD 机器,而无需先通过 SSH 连接到主服务器。

我使用了Nginx的流功能,如下所示:

stream {
upstream ssh {
    server 240.17.0.16:22;
}

server {
    listen 22;
    server_name bbb.flossir.org;
    proxy_pass ssh;
}
}

但是 Nginx 说它无法server_name在流部分处理:

nginx: [emerg] "server_name" directive is not allowed here in /etc/nginx/streams-enabled/bigbluebutton:7

我应该怎么办?

答案1

删除该server_name指令。正如您所见,流模块不存在https://nginx.org/en/docs/stream/ngx_stream_core_module.html

想想看,流模块提供了通用的 TCP 代理功能。与 HTTP 主机标头或 TLS 服务器名称指示 (SNI) 扩展不同,TCP 没有虚拟主机的主机名概念。

如果您想要绑定到公共 IP 地址bbb.flossir.org而不是通配符地址,请使用:

listen bbb.flossir.org:22;

https://nginx.org/en/docs/stream/ngx_stream_core_module.html#listen

相关内容