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 전달을 통해 그래픽 응용 프로그램을 열 수 있습니다. 문제는 인스턴스를 하나만 열 수 있고 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 

이것"-디"디버깅을 위한 옵션입니다. 다음과 같은 효과가 있습니다.

디버그 모드. 서버는 자세한 디버깅 출력을 표준 오류로 보내고 자신을 백그라운드로 두지 않습니다. 서버는 또한 포크(2) 및하나의 연결만 처리됩니다.. 이 옵션은 서버 디버깅에만 사용됩니다. -d 옵션을 여러 개 사용하면 디버깅 수준이 높아집니다. 최대값은 3입니다.

sshd가 하나의 연결만 허용하고 더 이상 허용하지 않는 동작을 설명하는 동작은 "-d" 옵션이 적용될 때 예상되는 동작과 정확히 같습니다.

지금과 동일한 동작을 얻고 sshd여러 연결을 처리하려면 다음을 수행해야 합니다.

/usr/bin/sshd -D -e -o LogLevel=DEBUG1
  • 이것"-디"옵션을 사용하면 sshd가 포그라운드에서 실행됩니다.
  • "-이자형"로그 메시지를 sshd의 표준 오류로 보냅니다.
  • "-o 로그레벨=DEBUG1"debug1 수준 로깅을 활성화합니다.

관련 정보