【问题标题】:Can the SSH protocol be used as a secure generic data port?SSH 协议可以用作安全的通用数据端口吗?
【发布时间】:2013-12-09 14:38:40
【问题描述】:

我正在编写一个客户端/服务器程序,它需要在两台机器之间创建一个安全的网络管道,并使用证书来识别它们。 SSH 协议似乎与此完美匹配——它内置的安全性、对双方身份验证的支持以及成熟度是一大优势。它还可以通过使用一个开放的连接来连接多个通用端口来复用连接。

这个想法是创建一个永远在线的连接(这些程序在客户端和服务器之间有一条专用线路),并在我需要时打开一个端口。 SSH协议可以这样使用吗?我将如何将 libssh 合并到我的程序中以支持它?

【问题讨论】:

  • 你能用scp吗?我真的不明白“在需要时打开端口”。
  • 看看ssh的端口转发功能。
  • @admdrew: scp 会复制文件,但我正在寻找数据传输,更像是它的本机端口转发。
  • @chepner:这几乎是我想做的,但我希望能够保持活动连接并打开和关闭端口,例如当在客户端执行命令 X 时,客户端将使用现有连接打开到服务器的端口,执行命令并返回结果。
  • 一件重要的事情我忘了提:客户端机器不应该能够在服务器上执行远程命令——它不应该有访问实时 shell 的权限,或者除了打开之外做任何事情这些数据端口。

标签: networking ssh libssh2 libssh


【解决方案1】:

您可以使用 libssh 做到这一点。您创建一个 ssh 会话,您可以为每个端口打开一个用于端口转发的通道。见

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

【讨论】:

  • 我可以在不打开本地 TCP 端口的情况下执行此操作吗?例如,打开某种 libssh 内部的流,而不是通过 TCP 连接到我自己?
  • 另外,感谢您的链接,我没有意识到 libssh 有如此高质量的文档。
  • SSH 可以像 TLS 一样用作应用程序的传输。
【解决方案2】:

您甚至可以使用 OpenSSH 的 -M/ControlMaster 功能尝试这种功能。

libssh 和 libssh2 都支持此功能。

有点小意思:SSH 不使用证书,它使用私钥/公钥。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多