원격 서버에 대한 ssh가 중단되지만 로컬에서는 작동합니다(putty/cygwin/windows 10에서 linux).

원격 서버에 대한 ssh가 중단되지만 로컬에서는 작동합니다(putty/cygwin/windows 10에서 linux).

openssh를 실행하는 Linux 서버가 있습니다. 로컬 LAN과 원격 모두에서 연결할 수 있습니다. 그러나 로컬로만 연결할 수 있는 클라이언트(Windows 10 노트북)가 하나 있습니다. 원격으로 연결하려고 하면 인증이 허용되지만 노트북의 SSH 클라이언트가 중단되어 Process Explorer를 사용하여 종료해야 합니다. 나는 문제가 다음과 같을 것이라고 생각했습니다.

  1. Windows 방화벽 - 아니요. 전원을 꺼도 동일한 동작이 발생합니다.
  2. SSH 클라이언트(cygwin) - 아니요. 퍼티에서도 동일한 동작이 발생했습니다.
  3. 윈도우 10 - 아니요. 다른 Win10 컴퓨터에서 원격으로 성공적으로 연결할 수 있습니다.

나는 cygwin과 putty를 모두 새로 설치해 보았습니다.

여러 -v 옵션을 사용하여 ssh를 실행하고 출력을 연결할 수 있는 다른 Win10 시스템과 비교해 보았습니다. 출력은 어느 정도 동일했습니다.

Authenticated to <<IP REMOVED>>.
debug2: fd 5 setting O_NONBLOCK
debug2: fd 6 setting O_NONBLOCK
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug3: send packet: type 90
debug1: Requesting [email protected]
debug3: send packet: type 80
debug1: Entering interactive session.
debug1: pledge: network
debug3: receive packet: type 91
debug2: channel_input_open_confirmation: channel 0: callback start
debug2: fd 3 setting TCP_NODELAY
debug3: ssh_packet_set_tos: set IP_TOS 0x10
debug2: client_session2_setup: id 0
debug2: channel 0: request pty-req confirm 1
debug3: send packet: type 98
debug2: channel 0: request shell confirm 1
debug3: send packet: type 98
debug2: channel_input_open_confirmation: channel 0: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768

>>>  "bad" machine hangs here

debug3: receive packet: type 99
debug2: channel_input_status_confirm: type 99 id 0
debug2: PTY allocation request accepted on channel 0
debug2: channel 0: rcvd adjust 2097152
debug3: receive packet: type 99
debug2: channel_input_status_confirm: type 99 id 0
debug2: shell request accepted on channel 0
Welcome to Linux Mint 17.3 Rosa (GNU/Linux 3.19.0-32-generic x86_64)

Welcome to Linux Mint

드문 경우지만, 환영 메시지까지 한두 번 정도 더 나아갔지만 연결이 입력 입력에 응답하지 않습니다.

서버에서 sshd -d를 수동으로 실행하고 "나쁜" 원격 세션과 다른 클라이언트의 "좋은" 원격 세션 간의 출력을 비교해 보았습니다. 출력은 동일합니다.

요약하자면 Windows 방화벽, 클라이언트 소프트웨어, Win10, 서버로의 포트 전달, DNS 또는 서버 자체가 아닌 것 같습니다. 문제는 이 클라이언트 시스템에만 있으며 로컬 LAN 외부에서 연결할 때만 발생합니다. 성공적으로 인증 중입니다. 그리고 클라이언트 컴퓨터는 문제가 없는 다른 컴퓨터와 동일한 OS/ssh 클라이언트를 실행하고 있으며 로그에서도 이를 구별하는 내용을 볼 수 없습니다.

편집: 또한 다른 원격 서버에 대한 SSH 연결이 모든 시스템에서 잘 작동한다는 점도 언급해야 합니다. 이 서버/클라이언트 쌍인 것 같습니다. 원격으로 연결할 때만 해당됩니다.

업데이트: 자세한 내용은 바로 아래 내 의견을 참조하세요. 문제는 로컬 네트워크에만 국한된 것 같습니다.

디버깅하려면 어떤 추가 단계를 수행해야 합니까?

답변1

정지된 시점에서 서버의 TCP 패킷이 클라이언트에 도달하는 것을 중지하는 것처럼 보입니다. 제가 생각하는 이유는 때때로 다른 지점에서 멈추기 때문이고, 문제는 네트워크 구성 변경에 따라 달라지기 때문입니다. 예를 들어 포트 전달, NAT 및/또는 방화벽 간의 원치 않는 상호 작용이 있을 수 있습니다. 그러나 문제는 이것이 한 클라이언트에서는 발생하고 다른 클라이언트에서는 발생하지 않는 이유를 진단하는 방법입니다. 내가 생각할 수 있는 두 가지 접근 방식은 다음과 같습니다.

  • 당신은 시도해 볼 수 있습니다패킷 모니터링서버와 클라이언트, 경로상의 지점에서 패킷이 실제로 손실되었는지, 어느 지점에서 손실되었는지 확인합니다.

  • 네트워크 설정과 다른 클라이언트의 문제 존재 여부 사이의 관계를 찾기 위해 실험을 할 수 있습니다. 작동 중인 클라이언트와 작동하지 않는 클라이언트 간에 네트워크 설정 및 IP 주소 전체 또는 일부를 교환하여 문제가 바뀌는지 확인합니다.

관련 정보