sshd는 bash -x /etc/init.d/sshd restart로 다시 시작한 경우에만 낮은 번호의 포트에 바인딩됩니다.

sshd는 bash -x /etc/init.d/sshd restart로 다시 시작한 경우에만 낮은 번호의 포트에 바인딩됩니다.

/etc/ssh/sshd_config에 기존 "Port 22" 줄 바로 아래에 "Port 110" 줄을 추가한 다음 /etc/init.d/sshd restartsshd가 두 포트(22 및 110) 모두에서 수신 대기하는 것을 볼 것으로 예상했습니다. 그러나 netstat -anp는 sshd가 기본 포트(22)만 수신하고 있음을 보여줍니다.

나중에 시도했는데 bash -x /etc/init.d/sshd restartsshd가 포트 110에 즉시 바인딩되는 것을 보고 놀랐습니다!!! 다시 1초를 발행하면 /etc/init.d/sshd restart내 변경 사항이 무시됩니다. 재부팅해도 변경 사항이 무시되므로 정체되어 완전히 당황합니다.

업데이트이런 이상한 행동이 나타난다낮은 포트(<1024)에서만

이것은 CentOS 6 서버에 있습니다.


세부

/etc/ssh/sshd_config에 대한 수정 사항은 다음과 같습니다.

grep ^Port /etc/ssh/sshd_config
Port 22
Port 110

이후 netstat 출력bash -x /etc/init.d/sshd restart

netstat -anp | grep -i listen|grep sshd|grep -v :::
tcp        0      0 0.0.0.0:110                 0.0.0.0:*                   LISTEN      7031/sshd           
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      7031/sshd     

이후 netstat 출력/etc/init.d/sshd restart

netstat -anp | grep -i listen|grep sshd|grep -v :::
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      8962/sshd  

sshd가 포트 110에 바인딩하도록 설득하는 또 다른 방법은 다음을 사용하여 디버그 모드에서 실행하는 것입니다 /usr/sbin/sshd -de ( listening on port 22,110줄을 참고하세요. 하지만 두 포트에 모두 연결하여 테스트도 했습니다).

/usr/sbin/sshd -de
debug1: sshd version OpenSSH_5.3p1
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug1: read PEM private key done: type DSA
debug1: private host key: #1 type 2 DSA
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-de'
Set /proc/self/oom_score_adj from 0 to -1000
debug1: Bind to port 22 on 0.0.0.0.
Server listening on 0.0.0.0 port 22.
debug1: Bind to port 22 on ::.
Server listening on :: port 22.
debug1: Bind to port 110 on 0.0.0.0.
Server listening on 0.0.0.0 port 110.
debug1: Bind to port 110 on ::.
Server listening on :: port 110.

답변1

SELinux 시스템은 1024 미만의 포트에 대한 포트 바인딩을 제한합니다.

semanage port -l | grep ssh
ssh_port_t                     tcp      22

다른 포트를 추가할 수 있습니다

semanage port -a -t ssh_port_t -p tcp 110

그러면 즉각적인 문제가 해결될 것입니다.

관련 정보