![Nginx 作为 SSH 网关?](https://linux22.com/image/922167/Nginx%20%E4%BD%9C%E4%B8%BA%20SSH%20%E7%BD%91%E5%85%B3%EF%BC%9F.png)
我有一台通过 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