如何通过ssh保护两个c ++程序之间的通信

ano*_*non 7 c++ security ssh

这可能是一个非编程问题.

博览会:

1)我正在使用Linux.

2)我有两个C++程序,"客户端"和"服务器"; 他们在不同的机器上运行,目前正在谈论tcpip.我有两个程序的源代码.

3)两个程序都没有在中间atacks/mac/encryption中缓冲过流检查/防御.

4)我不想在我的程序中添加这个额外的复杂层.

5)我想让两个程序只通过ssh通道(但是客户端和服务器都在多用户机器上运行;所以如果我只是打开端口,其他用途也可以访问它们).

题:

让客户端和服务器通过安全通道相互通信的最少侵入性方法是什么?

谢谢!

Kor*_*icz 8

就编程解决方案而言,您需要OpenSSLGNU TLS.在这两个中,后者写得更清晰(OpenSSL有很多陷阱).

对于一个非常优雅的解决方案,可以通过boost :: asio使用OpenSSL,但该解决方案可能仅适用于您正在开始新项目的情况.

在用户空间解决方案方面,如果您可以将两个程序设置为以指定用户身份运行,则可以为它们设置SSL隧道,但这在很大程度上取决于您希望如何建立连接.


bma*_*ies 7

好吧,你可以在隧道代理模式下使用ssh.您从一台计算机连接到另一台计算机并设置代理端口,然后客户端连接到其计算机上的本地端口,ssh代理与远程计算机的TCP连接.

ssh命令需要的选项是-L.

评论指出,至少在理论上,这是客户机器上某些程序爬上港口的风险.

但是,SSL需要很多机制.如果我必须这样做,而且我真的不想使用-L,我会深入研究ssh的源代码并提出一个方案来做-L的工作.