簡體   English   中英

如何通過ssh保護兩個c ++程序之間的通信

[英]How to secure communication between two c++ programs over ssh

這可能是一個非編程問題。

博覽會:

1)我正在使用Linux。

2)我有兩個C ++程序,“客戶端”和“服務器”; 他們在不同的機器上運行,目前正在談論tcpip。 我有兩個程序的源代碼。

3)這兩個程序都沒有在中間atacks / mac / encryption中對人員進行流量檢查/防御緩沖。

4)我不想在我的程序中添加這個額外的復雜層。

5)我想讓兩個程序只通過ssh通道(但是客戶端和服務器都在多用戶機器上運行;所以如果我只是打開端口,其他用途也可以訪問它們)。

題:

讓客戶端和服務器通過安全通道相互通信的最少侵入性方法是什么?

謝謝!

就編程解決方案而言,您需要OpenSSLGNU TLS 在這兩個中,后者寫得更清晰(OpenSSL有很多陷阱)。

對於一個非常優雅的解決方案,可以通過boost :: asio使用OpenSSL ,但該解決方案可能僅適用於您正在開始新項目的情況。

在用戶空間解決方案方面,如果您可以將兩個程序設置為以指定用戶身份運行,則可以為它們設置SSL隧道,但這在很大程度上取決於您希望如何建立連接。

好吧,你可以在隧道代理模式下使用ssh。 您從一台計算機連接到另一台計算機並設置代理端口,然后客戶端連接到其計算機上的本地端口,ssh代理與遠程計算機的TCP連接。

ssh命令需要的選項是-L

評論指出,至少在理論上,這是客戶機器上某些程序爬上港口的風險。

但是,SSL需要很多機制。 如果我必須這樣做,而且我真的不想使用-L,我會深入研究ssh的源代碼並提出一個方案來做-L的工作。

你基本上有兩個選擇,它們都不是SSH。 一,使用SSL / TLS,為了給本地用戶提供安全性,需要將其構建到您的程序中。 二,在每端的防火牆中使用IPSEC或OpenVPN以及一些本地用戶規則來限制隧道的使用僅限於運行任務的用戶。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM