nginx 分发 ssh
Posted code_____monkey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx 分发 ssh相关的知识,希望对你有一定的参考价值。
ngx_stream_ssl_preread_module
模块(1.11.5)允许从ClientHello消息中提取信息,而无需终止 SSL/TLS,例如,通过SNI请求的服务器名称或在ALPN中通告的协议。默认情况下未构建此模块,应使用--with-stream_ssl_preread_module
配置参数启用它。
在preread阶段启用从 ClientHello 消息中提取信息。
Embedded Variables
$ssl_preread_protocol
- 客户端支持的最高 SSL 协议版本(1.15.2)
SSL/TLS协议运行机制的概述 - 阮一峰的网络日志https://www.ruanyifeng.com/blog/2014/02/ssl_tls.html
SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络连接进行加密。
Secure Socket Layer,为Netscape所研发,用以保障在Internet上数据传输的安全,利用数据加密(Encryption)技术,可确保数据在网络上的传输过程中不会被截取及窃听。
当前版本为3.0。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。
SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
$ssl_preread_server_name
- 通过 SNI 请求的服务器名称
$ssl_preread_alpn_protocols
- 客户端通过 ALPN(1.13.10)发布的协议列表。这些值用逗号分隔。
- 测试HTTP/2支持的在线工具(需FQ):https://tools.keycdn.com/http2-test
打开nginx的ssl_preread on,使nginx预处理ssl握手client hello字段,通过读取alpn字段为identifyssh(可自定义)字符串 判断出是ssh连接,否则(兼容非ssl连接)都是http连接,分别指向不同的upstream。
ssh 连接命令
ssh deploy@120.221.95.76 -o "ProxyCommand openssl s_client -alpn Qdeicc@9902 -ign_eof -connect 120.221.95.76:8086"
其他实现:
Linux 如何做到 ssh/http 共用 80 端口?_技术解析_文章_数据地带
sslh
yum install libconfig libconfig-devel
yum install --downloadonly --downloaddir=. epel-release
rpm -ivh --nodeps --force ./epel-release-7-11.noarch.rpm (是否需要安装?)
wget http://rpmfind.net/linux/epel/7/x86_64/Packages/s/sslh-1.20-1.el7.x86_64.rpm
rpm -ivh --nodeps --force ./sslh-1.20-1.el7.x86_64.rpm
systemctl status sslh
修改sslh.cfg文件 vi /etc/sslh.cfg
参考more /usr/share/doc/sslh-1.20/example.cfg
问题1:客户端访问ip丢失
问题2:如何限定访问ip
HAProxy
让一个端口同时做两件事:http/https和ssh - chen110xi - 博客园
Http tunnel技术介绍_G-CSDN博客_http tunnel
以上是关于nginx 分发 ssh的主要内容,如果未能解决你的问题,请参考以下文章