2013-11-27 49 views
-1

我正在寫一個客戶端/服務器程序,它需要在兩臺機器之間創建一個安全的網絡管道,並使用證書來標識它們。 SSH協議似乎是一個完美的搭配 - 它的內置安全性,支持雙方身份驗證,成熟度都是很大的優勢。它也可以通過使用一個開放連接來連接多個通用端口來複用連接。SSH協議可以用作安全通用數據端口嗎?

這個想法是創建一個永遠在線的連接(這些程序在客戶端和服務器之間有一條專用線路),並在需要的時候打開一個端口。 SSH協議可以這樣使用嗎?我將如何將libssh併入我的程序來支持它?

+0

你可以使用'scp'嗎?我真的不明白「每當我需要的時候打開一個端口」。 – admdrew

+0

查看'ssh'的端口轉發設施。 – chepner

+0

@admdrew:'scp'會複製文件,但我正在尋找數據傳輸,更像是它的本地端口轉發。 – configurator

回答

1

你可以使用libssh來做到這一點。您可以創建一個ssh會話,併爲每個端口打開一個端口轉發通道。見

http://api.libssh.org/stable/libssh_tutor_forwarding.html

+0

我可以在不打開本地TCP端口的情況下做到這一點嗎?和in一樣,打開libssh內部的某種流,而不是通過TCP連接到自己? – configurator

+1

另外,感謝您的鏈接,我沒有意識到libssh有這樣高質量的文檔。 – configurator

+0

SSH可以用作TLS等應用程序的傳輸。 – asn

1

你甚至可以嘗試在OpenSSH的-M/ControlMaster功能這種功能。

libssh和libssh2都支持此功能。

有點nit:SSH不使用證書,它使用私鑰/公鑰。