기존 호스트 debian Bullseye에 대한 SSH 연결이 거부되었습니다.

기존 호스트 debian Bullseye에 대한 SSH 연결이 거부되었습니다.

이전에 ssh를 통해 서버에 연결된 클라이언트가 연결을 끊었다가 나중에 다시 연결을 시도할 때 "포트 22 연결 거부됨" 오류 메시지를 받는 이상한 버그가 있습니다. 다시 연결하려면 클라이언트 컴퓨터를 다시 시작해야 합니다. 이전에 SSH 서버에 연결되지 않은 클라이언트는 언제든지 연결할 수 있습니다.

왜 이런 일이 발생하는지에 대한 아이디어가 있습니까? service sshd status문제가 표시되지 않으며 auth.log시도도 기록되지 않습니다. 방화벽도 비활성화되어 있습니다.

Windows 10의 일반적인 연결:

OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
debug3: Failed to open file:C:/Users/baric/.ssh/config error:2
debug3: Failed to open file:C:/ProgramData/ssh/ssh_config error:2
debug2: resolve_canonicalize: hostname 192.168.1.101 is address
debug2: ssh_connect_direct
debug1: Connecting to 192.168.1.101 [192.168.1.101] port 22.
debug3: finish_connect - ERROR: async io completed with error: 10061, io:000002E37B8A09C0
debug1: connect to address 192.168.1.101 port 22: Connection refused
ssh: connect to host 192.168.1.101 port 22: Connection refused

답변1

이 동작에 대한 한 가지 가능한 설명은 SSH 서버가 동일한 IP 주소의 동시 연결 수를 제한하도록 구성되어 있다는 것입니다. 클라이언트가 처음으로 서버에 연결하면 새로운 연결이 설정되어 서버의 연결 테이블에 등록됩니다. 그러나 클라이언트 연결이 끊어지면 서버 측 연결이 즉시 종료되지 않고 timed-wait더 짧은 시간 동안 열린 상태로 유지될 수 있습니다. 이 시간 동안 서버는 여전히 클라이언트가 연결되어 있다고 생각하여 동일한 IP 주소로부터의 새 연결을 허용하지 않을 수 있습니다.

Connection refused클라이언트가 이 시간 동안 연결을 시도하면 서버는 여전히 이전 연결이 완전히 종료되기를 기다리고 있기 때문에 오류 메시지를 받게 됩니다 .

이런 경우인지 확인하려면 SSH 서버에서 허용하는 최대 동시 연결 수를 늘려 문제가 지속되는지 확인할 수 있습니다. 연결 시간 초과 값을 조정하여 도움이 되는지 확인할 수도 있습니다.

# find these two lines in /etc/ssh/sshd_config and try to reduce their values to see if it helps

ClientAliveInterval
ClientAliveCountMax

sudo systemctl reload ssh # (might be ssh on your server

관련 정보