在 ssh 服务器上打开通道

Open channel on ssh Server

如何使用来自 sshserver 的 apache sshd 打开连接到已连接 ssh 客户端的 'shell' 通道。 RFC 4254 提及

When either side wishes to open a new channel, it allocates a local number for the channel

这意味着服务器也可以打开一个通道给客户端。

但是我在 org.apache.sshd.server.session.ServerSession 上没有看到任何 API..?我错过了什么..?我的要求是从 sshserver 异步发送消息到 sshclient。

SSH2 协议被设计成可扩展的,以防有这样的用例。但目前还不是这样,没有可以从服务器端启动的通道。

所以即使有这样的请求,在大多数客户端也是无效的,你在OpenSSH code中搜索可以看到:

  • packet_start(SSH2_MSG_CHANNEL_OPEN); 从客户端创建一个新频道
  • dispatch_set(SSH2_MSG_CHANNEL_OPEN, &server_input_channel_open); 在服务器中为此消息分配处理程序。

反之则不然,因此它会被忽略或导致错误。