SSHサーバーは同じクライアントからの複数の接続を拒否します。

SSHサーバーは同じクライアントからの複数の接続を拒否します。

Alpine Linux 3.15 Dockerコンテナで実行される単純なopensshサーバーがあり、dwmを使用してXサーバーを実行しているSSHサーバーと同じバージョンのAlpineを実行する他のコンテナもあります。

次のコマンドを使用して、stXサーバーからSSHサーバーに接続して実行しました。

ssh -v -t [email protected] st

SSH サーバーは、次のコマンドを使用して実行されます。

/usr/bin/sshd -D -d -e

変数は(SSHサーバーのホスト名として)$DISPLAYに設定されます。ssh:10ssh

クライアントは、stサーバーからクライアントディスプレイ()へのX11転送を介してグラフィカルアプリケーションを開くことができます。問題は、インスタンスを1つだけ開くことができ、st次のエラーを受け取ることです。

ssh: connect to host 172.17.0.2 port 22: Connection refused

サーバー側ログ:

Starting session: command on pts/1 for client from 172.17.0.3 port 34060 id 0
debug1: Setting controlling tty using TIOCSCTTY.
debug1: X11 connection requested.
debug1: channel 3: new [X11 connection from 172.17.0.2 port 35028]
debug1: Received SIGCHLD.
debug1: session_by_pid: pid 9
debug1: session_exit_message: session 0 channel 0 pid 9
debug1: session_exit_message: release channel 0
debug1: session_by_tty: session 0 tty /dev/pts/1
debug1: session_pty_cleanup2: session 0 release /dev/pts/1
debug1: channel 3: free: X11 connection from 172.17.0.2 port 35028, nchannels 4
debug1: session_by_channel: session 0 channel 0
debug1: session_close_by_channel: channel 0 child 0
debug1: session_close_x11: detach x11 channel 1
debug1: session_close_x11: detach x11 channel 2
Close session: user client from 172.17.0.3 port 34060 id 0
debug1: channel 0: free: server-session, nchannels 3
debug1: channel 1: free: X11 inet listener, nchannels 2
debug1: channel 2: free: X11 inet listener, nchannels 1
Received disconnect from 172.17.0.3 port 34060:11: disconnected by user
Disconnected from user client 172.17.0.3 port 34060
debug1: do_cleanup
debug1: do_cleanup

クライアントログ:

Running /usr/bin/xauth remove ssh:10.0
/usr/bin/xauth add ssh:10.0 MIT-MAGIC-COOKIE-1 49907415ff518044198f6f0075f270fe
debug1: client_input_channel_open: ctype x11 rchan 3 win 65536 max 16384
debug1: client_request_x11: request from 172.17.0.2 35028
debug1: channel 1: new [x11]
debug1: confirm x11
OpenSSH_8.8p1, OpenSSL 1.1.1l  24 Aug 2021
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling
debug1: Connecting to 172.17.0.2 [172.17.0.2] port 22.
debug1: connect to address 172.17.0.2 port 22: Connection refused
ssh: connect to host 172.17.0.2 port 22: Connection refused
xinit: connection to X server lost

waiting for X server to shut down debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype [email protected] reply 0
debug1: channel 1: free: x11, nchannels 2
X connection to ssh:10.0 broken (explicit kill or server shutdown).
debug1: channel 0: free: client-session, nchannels 1
Connection to 172.17.0.2 closed.
Transferred: sent 91292, received 92728 bytes, in 3.1 seconds
Bytes per second: sent 29350.8, received 29812.5
debug1: Exit status 1
(II) Server terminated successfully (0). Closing log file.

deallocvt: can't open console

ベストアンサー1

sshd次のコマンドで実行中だと言われました。

/usr/bin/sshd -D -d -e 

これ「-D」デバッグのためのオプションです。次の効果があります。

デバッグモード。サーバーは詳細なデバッグ出力を標準エラーとして送信し、自分自身をバックグラウンドにしません。サーバーはまたフォーク(2)と1つの接続のみが処理されます。。このオプションは、サーバーのデバッグにのみ使用されます。 -dオプションを複数使用すると、デバッグレベルが高くなります。最大値は3です。

sshdが1つの接続のみを許可し、それ以上許可しない動作を説明する動作は、「-d」オプションが適用されたときに予想される動作とまったく同じです。

今と同じ動作を得て複数のsshd接続を処理するには、次の手順を実行する必要があります。

/usr/bin/sshd -D -e -o LogLevel=DEBUG1
  • これ「-D」オプションを使用すると、sshd がフォアグラウンドで実行されます。
  • 「-金利」ログメッセージをsshdの標準エラーとして送信します。
  • "-oログレベル=DEBUG1"debug1 レベルのロギングをイネーブルにします。

おすすめ記事