web-dev-qa-db-ja.com

sshエラーメッセージのチャネル番号は何を示していますか?

以下の例では、チャネル番号は何に対応していますか?サーバー上にあるのはどれですか?どちらがクライアントにありますか?

  $ ssh -L1570:127.0.0.1:8899 root@thehost
    Password:
    Last login: Fri Aug  9 13:08:44 2013 from theclientip
    Sun Microsystems Inc.   SunOS 5.10      Generic January 2005
    You have new mail.
    # channel 2: open failed: administratively prohibited: open failed
    channel 3: open failed: administratively prohibited: open failed
    channel 2: open failed: administratively prohibited: open failed

SshクライアントはWindows 7で実行されており、サーバーにはポート8899で実行されているTomcatサーバーがあります。

Tomcatはリモートマシンの127.0.0.1をリッスンしていないため、コマンドをssh -L1570:thehostpublicip:8899 root@thehostに変更すると、ポートフォワードが機能します。したがって、ポート転送はサーバー上で問題なく動作しているようです。

私のsshd構成ファイルには、次の2行が含まれています。

# Port forwarding
AllowTcpForwarding yes

# If port forwarding is enabled, specify if the server can bind to INADDR_ANY.
# This allows the local port forwarding to work when connections are received
# from any remote Host.
GatewayPorts yes

Tomcat以外の別のプロセスのポート転送を設定しようとしています。上記のようなエラーメッセージが表示されるので、エラーメッセージの意味を理解しようとしています。

12
ams

SSHプロトコルのドキュメント から、チャネルに関して:

すべての端末セッション、転送された接続などはチャネルです。どちら側でもチャネルを開くことができます。複数のチャネルが単一の接続に多重化されます。

チャネルは両端の番号で識別されます。チャネルを参照する番号は、両側で異なる場合があります。チャネルを開く要求には、送信者のチャネル番号が含まれています。その他のチャネル関連メッセージには、チャネルの受信者のチャネル番号が含まれています。

チャネルはフロー制御されます。ウィンドウスペースが利用可能であることを示すメッセージが受信されるまで、チャネルにデータを送信できません。

ポート転送

あなたが持っているコマンドはうまく見えます。接続しようとしているサービスが稼働中で、接続を受け入れていますか?チャネルエラーは、そうではないことを示しているようです。

私のアクティブなチャネルは何ですか?

アクティブなssh接続がある場合は、次のキーの組み合わせを使用してヘルプを取得できます。

Shift+~ に続く Shift+?

$ ~?
Supported escape sequences:
  ~.  - terminate connection (and any multiplexed sessions)
  ~B  - send a BREAK to the remote system
  ~C  - open a command line
  ~R  - Request rekey (SSH protocol 2 only)
  ~^Z - suspend ssh
  ~#  - list forwarded connections
  ~&  - background ssh (when waiting for connections to terminate)
  ~?  - this message
  ~~  - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)
debug2: channel 2: written 480 to efd 8

次に、このキーの組み合わせを使用して、アクティブなチャネルのリストを取得できます。

Shift+~ に続く Shift+#

$ ~#
The following connections are open:
  #2 client-session (t4 r0 i0/0 o0/0 fd 6/7 cc -1)
debug2: channel 2: written 93 to efd 8
21
slm

Tomcatがループバック(127.0.0.1)をリッスンしていない場合、そのポートに転送するポートは、受け取っていたエラーメッセージを表示します。

Sshを実行し、ポートをリスニングしていないポートに転送した場合(例:ssh -L1234:127.0.0.1:9999 10.0.0.1-10.0.0.1のプロセスが127.0.0.1のポート9999にバインドされていない場合)、同じエラーが発生します。

channel 2: open failed: administratively prohibited: open failed

Sshに-vvvを追加すると、どのチャネルが参照されているかを確認できます

ssh -vvv -L1570:127.0.0.1:8899 root@thehost

どのポートが "他のプロセス"をリッスンしている(およびどのIPアドレスで)か、netstat -tulpnは、サーバー上のどのポートとIPプロセスが使用しているかを確認します。-Lは、アドレスとポートをポイントする必要があります聞いています。

4
Drav Sloan