SSH 로그인 중에 원격 서버가 무작위로 중단됩니다.

SSH 로그인 중에 원격 서버가 무작위로 중단됩니다.

서버에 SSH로 접속해보겠습니다

ssh name@box-a

이 시점에서 일반적으로 비밀번호를 입력하라는 메시지가 표시된 다음 로그인됩니다.

그러나 때때로 SSH를 시도할 때 Enter 키를 누른 후 작동이 멈추고 비밀번호를 입력하고 서버에 액세스할 수 없습니다. 오류 메시지는 없고 그냥 멈춥니다. 이 문제는 모든 사용자에게 발생합니다. 서버를 다시 시작하면 문제가 저절로 해결됩니다.

ssh -vvv name@box-a

반품

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to box-a [box-a] port 22.
debug1: connect to address box-a port 22: Operation timed out
ssh: connect to host box-a port 22: Operation timed out

-------------------------------- 회신하다----------------- -------------

6022에 ssh 포트를 추가했는데 방금 파일을 편집할 때 쫓겨났습니다.

Write failed: Broken pipe

그런 다음 다시 SSH를 통해 시도합니다.

ssh -vvv -p 6022 name@IP-external
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to IP-external [IP-external] port 6022.
debug1: connect to address IP-external port 6022: No route to host
ssh: connect to host IP-external port 6022: No route to host

또한 나는 그랬다.

lastb

지난 하루나 이틀 동안 수천 건의 로그인 시도가 있었습니다. 제 생각엔 그럴 수도 있을 것 같아요. 저는 CentOS 6.5를 사용하고 있습니다. Fail2ban이 나에게 최선의 선택입니까?

답변1

새로운 정보로 업데이트:

나는 구성이 올바르지 않은 것처럼 시작하지 않을 것이며 fail2ban결국 상자 밖으로 자신을 가두게 될 것입니다.

대신, 먼저 포트를 sshd_config더 높은 포트 번호로 변경하고 사용자의 로그인 비밀번호를 더 강력한 20자 이상의 문자로 변경합니다(sshd를 다시 시작하는 것을 잊지 마세요). 이로 인해 로그인 연결이 줄어드는지 확인하세요. 그렇지 않다면 좀 더 극단적인 경로를 택하고 Fail2ban을 구성하는 것이 좋습니다. 하지만 다시 한 번 매우 주의를 기울여 설치 설명서를 철저하게 읽어 보십시오.


다른 포트 번호에서 실행되는 두 번째 서비스를 만들고 sshd로그인 문제가 발생할 때까지 그대로 두겠습니다. 그런 다음 다음에 문제가 발생하면 다른 사람에게 연결하여 sshd문제에 대한 추가 정보를 찾을 수 있는지 확인하겠습니다.

포트에서 디버그 sshd를 생성합니다 6022(원래 sshd가 이미 포트 22에서 실행 중이므로 이 작업을 수행해야 함).

# nohup /usr/sbin/sshd -p 6022 -ddd > ~/sshd.log 2>&1 &
  • 북면:정지의 영향을 받지 않는 명령을 실행하고 tty가 아닌 명령으로 출력합니다.
  • -피:포트 번호 설정(이 예에서는 6022)
  • > ~/sshd.log 2>&1: stdout 및 stderr을 ~/sshd.log로 리디렉션합니다.
  • &: 명령이 제어 연산자 &에 의해 종료되면 쉘은 서브쉘의 백그라운드에서 명령을 실행합니다. 쉘은 명령이 완료될 때까지 기다리지 않고 상태 0을 반환합니다.

이 새로운 sshd는 하나의 연결만 허용하고 연결이 성공하면 종료됩니다.

# ssh -vvv -p 6022 user@remotehostname
[OR]
# ssh -vvv -p 6022 user@remoteIPaddress

다음에 중단되면 다음을 확인할 수 있습니다.

  1. 포트 22에서 실행되는 sshd로 인해 문제가 발생합니까? 6022는 성공했나요?
  2. 22와 6022가 모두 중단되면 -ddd 서버 출력과 클라이언트 -vvv 출력의 로그를 비교하여 문제에 대한 추가 정보를 찾을 수 있는지 확인할 수 있습니다.

확인할 수 있는 또 다른 사항은 MTU입니다. 이전에도 서버와 클라이언트 간에 MTU 크기가 일치하지 않는 비슷한 상황을 겪었습니다. 두 가지를 비교하여 불일치가 있는지 확인해야 합니다.

[root ~]# ifconfig            # I removed sensitive information:
eth0      Link encap:Ethernet
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

답변2

나는 다음을 추천한다:

  1. 클라이언트가 연결을 제대로 닫았는지 확인하세요. 어떤 경우에는 서버가 연결을 열어두고 한계에 도달할 수도 있습니다( netstat친구입니다).
  2. 실패한 로그인 시도에 대한 로그를 확인하십시오. 무차별 대입 공격으로 인해 SSH 서버가 과부하되었을 수 있습니다.
  3. 설치 fail2ban- 이러한 시도를 수행하는 IP를 금지합니다. (자신을 차단하지 않으려면 IP를 신뢰하도록 조정하십시오.)
  4. 정의된 모든 네임서버가 /etc/resolv.conf제대로 작동하는지 확인합니다.
  5. SSHD 조정

sshd_config최소한 다음이 있어야 합니다.

 Port 57322 # not 22 and some high one - above 1024
 Protocol 2
 UseDNS no # it'll speed-up the connection process a bit (or even a lot if your DNS doesn't work well)
  1. ifconfig여러번 실행하여 이상이 errors없거나 dropped증가 했는지 확인
  2. @DevNull이 MTU 확인을 제안했듯이( tcpdump여기서는 친구이지만 낮게 설정하고 도움이 되는지 확인하는 것이 더 쉬울 것입니다. ip link set eth0 mtu 1462브리지 인터페이스의 VM이라면 도움이 될 수 있지만 설정할 수 있습니다. 설정으로 테스트됨) 훨씬 낮은)

관련 정보