2013-11-27 47 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不使用证书,它使用私钥/公钥。