让 sslh 或 nginx 监听串行端口,通过串行端口获取 VPN 或 HTTP(S) 或 SSH(真实、模拟和/或虚拟)

让 sslh 或 nginx 监听串行端口,通过串行端口获取 VPN 或 HTTP(S) 或 SSH(真实、模拟和/或虚拟)

我想提供更多的服务- 可以通过以下方式登录。本质上,我想为机器提供传统的网络监听服务(具有强加密/身份验证)A通过串行可用。我的第一个转到是sslh,因为它是为了在一个端口上复用一堆服务而设计的。我的第二个 GoTo 是“

这主要适用于您所处的情况

  • 调试/配置虚拟机管理程序或虚拟机的主网络连接A同时具有与机器的独立连接,通过(真实或虚拟)串行连接[局域网上通过智能制造管理接口] 到A
  • 希望确保传输的舒适性/安全性,而我唯一的访问是通过不受信任的网络/基础设施中的控制台服务器。 (而且我不想乱搞以及lrzsz更多。)

我知道以下解决方法/半解决方案,并列出它们以抢占建议:

  • 跑步两端:可以,是的,但是我必须处理额外的路由、命名、地址分配/创建等。这是我当前使用的选项。但我想避免设置所有这些额外的网络。
  • 跑步 维基百科, 喜欢这里: 工作原理类似于,但是年纪大了。

运行 PPPd/slirp 还要求我通过此链接运行 VPN、SSH 和/或 HTTPS。 (我知道PPP 的加密可能性,但他们很弱或者EAP-TLS,但我想避免管理更多组凭据)

我主要想通过这个“串行连接”使用的“服务”是交互式 shell、文件传输和到虚拟机/容器等的 HTTP(s)。 “在主机上或后面”A

所以,我试图得到使用“前台模式”“收听串行” -f,即还使用“inetd”-i选项;这个的各种版本:

socat -d -d file:/dev/ttyS0,b115200,raw,ignoreeof,echo=0 SYSTEM:'sslh -i --ssh 127.0.0.1:22 --http 127.0.0.1:80'

但是,在这个咒语中,抱怨选项的格式,尽管sslh在“--listen”上愉快地运行它们127.0.0.1:2222,所以然后我尝试了各种版本:

socat -d -d file:/dev/ttyS0,b115200,raw,ignoreeof,echo=0 tcp:127.0.0.1:2222

现在socat运行了,所以我尝试从另一端使用以下变体进行连接,但没有成功:

ssh foo -o "Proxycommand=socat -d -d -d - /dev/ttyUSB0,b115200,ignoreeof,raw,echo=0"

按照建议这是一个不太有效的尝试或者喜欢

ssh -v foo -o "ProxyCommand bash -c 'exec 3<>/dev/ttyUSB0; cat <&3 & cat >&3'"

我试过正如这个未经证实的答案中所建议的“串行到 SSH”在一个ServerFault 上类似的非活动问题。答案是“应该工作”,但不适合我。

我提到在标题中,因为我已经有了一个正常运行的 nginx 服务复用(SSL[-ALPN]/HTTPS/SSLH(SSH,OpenVPN,HTTP)) 类似于&工作,也快乐监听unix:-sockets,但我无法使用相同语法来使用串行端口。我还尝试使用进行/dev/ttySX“桥接” 。UNIX-CONNECT:/run/nginx-XYZ.socksocat

思考,我的问题是,socat在开始时直接打开两侧,而不是首先等待数据包从左侧(= SSH 客户端)到达,然后只触发打开命令的第二侧(到 SSH)服务器)。

所以,长话短说:我怎样才能得到,,或者监听串行端口,有或没有辅助程序,如有一个通用的解决方案吗?

或者:我也很高兴提供以下示例./config/- 用于串行双方的集成工具,使pppd自动生成的(IPv6?)地址透明且自动。

注意:板载串行端口通常提供 1.5MBits/s,大多数 USB 串行端口适配器支持 3MB/s,对于 SSH 和“rsync-over-ssh 备份/etc”来说足够快了。另外还有压缩。

注2:我知道,我只能通过串行获得一个并发连接,并且我可能需要等待超时才能再次使用该端口,但是 1 个 SSH/TCP-OpenVPN 可以复用我需要的任何内容那一个连接。

相关内容