8

我想通过端口 80 上的子域使端口 22 上的 ssh 服务器可用。

我认为应该是这样的:

server {
    listen          ssh.domain.tld:80;
    server_name     ssh.domain.tld;

    location / {
        proxy_pass          http://localhost:22;
    }
}

但它不会起作用。nginx 将接受这个并从这个配置开始,但我只从ssh.domain.tld:80.

我错过了什么?

4

3 回答 3

7

由于 Nginx 版本 1.9.0,NGINX 支持 ngx_stream_core_module 模块,它应该使用 --with-stream 启用。当启用流模块时,它们可以使用 ssh 协议 tcp 代理

stream {
upstream ssh {
    server localhost:22;
}
    server {
    listen        80;
    proxy_pass    ssh;
} }

https://www.nginx.com/resources/admin-guide/tcp-load-balancing/

于 2017-05-19T16:55:07.707 回答
3

你应该使用sslh

将 nginx 配置为在与 80 不同的端口上运行,例如 800,然后配置 sslh 以将 Web 流量重定向到/etc/default/sslh.conf文件中的该端口。

此设置可能需要 15 分钟。或更少。

于 2015-05-30T13:37:37.353 回答
-1

基本上你找错地方了:

  • stock nginx 可以代理网络和/或电子邮件流量,它根本不处理 ssh 流量
  • 子域是一个 dns 问题:在您的 dns 设置中配置它,您需要一个A和/或AAAA记录链接ssh.domain.tld到您的 ssh 服务器ip-adres
  • 您的 ssh 服务器侦听的端口是 ssh 服务器设置(man sshd_config具体参见ListenAddressandPort指令)
于 2013-02-04T22:24:25.960 回答