서버에 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
다음에 중단되면 다음을 확인할 수 있습니다.
- 포트 22에서 실행되는 sshd로 인해 문제가 발생합니까? 6022는 성공했나요?
- 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
나는 다음을 추천한다:
- 클라이언트가 연결을 제대로 닫았는지 확인하세요. 어떤 경우에는 서버가 연결을 열어두고 한계에 도달할 수도 있습니다(
netstat
친구입니다). - 실패한 로그인 시도에 대한 로그를 확인하십시오. 무차별 대입 공격으로 인해 SSH 서버가 과부하되었을 수 있습니다.
- 설치
fail2ban
- 이러한 시도를 수행하는 IP를 금지합니다. (자신을 차단하지 않으려면 IP를 신뢰하도록 조정하십시오.) - 정의된 모든 네임서버가
/etc/resolv.conf
제대로 작동하는지 확인합니다. - 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)
ifconfig
여러번 실행하여 이상이errors
없거나dropped
증가 했는지 확인- @DevNull이 MTU 확인을 제안했듯이(
tcpdump
여기서는 친구이지만 낮게 설정하고 도움이 되는지 확인하는 것이 더 쉬울 것입니다.ip link set eth0 mtu 1462
브리지 인터페이스의 VM이라면 도움이 될 수 있지만 설정할 수 있습니다. 설정으로 테스트됨) 훨씬 낮은)