这可能是一个非编程问题.
博览会:
1)我正在使用Linux.
2)我有两个C++程序,"客户端"和"服务器"; 他们在不同的机器上运行,目前正在谈论tcpip.我有两个程序的源代码.
3)两个程序都没有在中间atacks/mac/encryption中缓冲过流检查/防御.
4)我不想在我的程序中添加这个额外的复杂层.
5)我想让两个程序只通过ssh通道(但是客户端和服务器都在多用户机器上运行;所以如果我只是打开端口,其他用途也可以访问它们).
题:
让客户端和服务器通过安全通道相互通信的最少侵入性方法是什么?
谢谢!
就编程解决方案而言,您需要OpenSSL或GNU TLS.在这两个中,后者写得更清晰(OpenSSL有很多陷阱).
对于一个非常优雅的解决方案,可以通过boost :: asio使用OpenSSL,但该解决方案可能仅适用于您正在开始新项目的情况.
在用户空间解决方案方面,如果您可以将两个程序设置为以指定用户身份运行,则可以为它们设置SSL隧道,但这在很大程度上取决于您希望如何建立连接.
好吧,你可以在隧道代理模式下使用ssh.您从一台计算机连接到另一台计算机并设置代理端口,然后客户端连接到其计算机上的本地端口,ssh代理与远程计算机的TCP连接.
ssh命令需要的选项是-L
.
评论指出,至少在理论上,这是客户机器上某些程序爬上港口的风险.
但是,SSL需要很多机制.如果我必须这样做,而且我真的不想使用-L,我会深入研究ssh的源代码并提出一个方案来做-L的工作.