我想提供更多的服务串行控制台- 可以通过以下方式登录串行端口。本质上,我想为机器提供传统的网络监听服务(具有强加密/身份验证)A通过串行可用。我的第一个转到是sslh
,因为它是为了在一个端口上复用一堆服务而设计的。我的第二个 GoTo 是“nginx。
这主要适用于您所处的情况
- 调试/配置虚拟机管理程序或虚拟机的主网络连接A同时具有与机器的独立连接乙,通过(真实或虚拟)串行连接[局域网上通过智能制造管理接口] 到A。
- 希望确保传输的舒适性/安全性,而我唯一的访问是通过不受信任的网络/基础设施中的控制台服务器。 (而且我不想乱搞克米特以及
lrzsz
更多。)
我知道以下解决方法/半解决方案,并列出它们以抢占建议:
- 跑步点对点在两端:可以,是的,但是我必须处理额外的路由、命名、地址分配/创建等。这是我当前使用的选项。但我想避免设置所有这些额外的网络。
- 跑步斯利普 维基百科, 喜欢这里: 工作原理类似于点对点,但是年纪大了。
运行 PPPd/slirp 还要求我通过此链接运行 VPN、SSH 和/或 HTTPS。 (我知道PPP 的加密可能性,但他们很弱或者EAP-TLS,但我想避免管理更多组凭据)
我主要想通过这个“串行连接”使用的“服务”是交互式 shell、文件传输和到虚拟机/容器等的 HTTP(s)。 “在主机上或后面”A。
所以,我试图得到sslh使用“前台模式”“收听串行” -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抱怨选项的格式,尽管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在标题中,因为我已经有了一个正常运行的 nginx 服务复用(SSL[-ALPN]/HTTPS/SSLH(SSH,OpenVPN,HTTP)) 类似于这&这工作,也快乐监听unix:
-sockets,但我无法使用相同语法来使用串行端口。我还尝试使用进行/dev/ttySX
“桥接” 。UNIX-CONNECT:/run/nginx-XYZ.sock
socat
我思考,我的问题是,socat
在开始时直接打开两侧,而不是首先等待数据包从左侧(= SSH 客户端)到达,然后只触发打开命令的第二侧(到 SSH)服务器)。
所以,长话短说:我怎样才能得到SSH,sslh,或者nginx监听串行端口,有或没有辅助程序,如索卡特?有一个通用的解决方案吗?
或者:我也很高兴提供以下示例.
SSH/config
/系统- 用于串行双方的集成工具,使pppd
自动生成的(IPv6?)地址透明且自动。
注意:板载串行端口通常提供 1.5MBits/s,大多数 USB 串行端口适配器支持 3MB/s,对于 SSH 和“rsync-over-ssh 备份/etc
”来说足够快了。另外还有压缩。
注2:我知道,我只能通过串行获得一个并发连接,并且我可能需要等待超时才能再次使用该端口,但是 1 个 SSH/TCP-OpenVPN 可以复用我需要的任何内容那一个连接。