[英]How to secure communication between two c++ programs over ssh
這可能是一個非編程問題。
博覽會:
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的工作。
你基本上有兩個選擇,它們都不是SSH。 一,使用SSL / TLS,為了給本地用戶提供安全性,需要將其構建到您的程序中。 二,在每端的防火牆中使用IPSEC或OpenVPN以及一些本地用戶規則來限制隧道的使用僅限於運行任務的用戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.