2017-04-26 178 views
1

如何使用sshserver中的Apache sshd打開連接的ssh客戶端的'shell'通道。 RFC 4254提到在ssh上打開通道服務器

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。

回答

0

SSH2協議被設計成可擴展的,以防將來出現類似這樣的情況。但事實並非如此,並且從服務器端沒有渠道可以啓動。

因此,即使會有這樣的要求,這將是大部分客戶無效的,因爲你可以看到,當你通過OpenSSH code搜索:

  • packet_start(SSH2_MSG_CHANNEL_OPEN);創建從客戶端的新渠道
  • dispatch_set(SSH2_MSG_CHANNEL_OPEN, &server_input_channel_open);在服務器中爲此消息分配處理程序。

沒有什麼比這種方式更容易被忽略或導致錯誤。

+0

謝謝@Jakuje。那麼,這是否意味着OpenSSH不符合RFC然後..?如果不支持來自服務器的異步消息傳遞,爲此目的保留專用客戶端打開的通道是一個好主意......?你有什麼建議優化解決方案..? – 302Found

+0

不。RFC廣泛地談論可能性,bot其他RFC指定信道類型。而且從服務器的可用性或安全角度來看,它們都沒有意義。 – Jakuje

+0

爲了這個目的,專門爲客戶打開一個頻道是否是一個好主意......? – 302Found