解决CentOS更改ssh端口后报错的问题

前言

众所周知,SSH用的默认是22端口。因为每台机子的端口都是一样的,骇客扫一个IP段的22端口就能扫出不少机子。虽然我自己的服务器禁止了密码登录,但是被爆破也不是好玩的事情,所以我决定更改SSH端口。

那么问题来了

  • 我以前没用过CentOS,一直用的是Debian/Ubuntu,改端口只需要改一下配置文件就行。
  • sudo vim /etc/ssh/sshd_config
  • 然后去掉了port前面的号,把22改成了1234(实际上不是1234我只是示范而已)。
  • 然后就像以前一样service ssh restart
  • Orz好吧貌似Centos用的不是ssh而是sshd,于是就service sshd restart
  • 于是问题又来了,lsof -i:1234的时候发现居然没在监听1234端口。
  • 我看看它的状态,service sshd status,居然发现sshd炸了。大概是这么个输出:
sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
   Active: activating (auto-restart) (Result: exit-code) since Thu 2016-05-05 03:30:48 UTC; 2s ago
  Process: 10938 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
  Process: 10944 ExecStart=/usr/sbin/sshd -D $OPTIONS (code=exited, status=255)
 Main PID: 10944 (code=exited, status=255)

May 05 03:30:48 ixnetwork-uk1 systemd[1]: sshd.service: main process exited, code=exited, status=255/n/a
May 05 03:30:48 ixnetwork-uk1 systemd[1]: Unit sshd.service entered failed state.
  • 再看看日志(btw,CentOS的日志不是syslog而是secure)。
  • tail /var/log/secure:
May  5 03:46:12 localhost sshd[11016]: error: Bind to port 1234 on 0.0.0.0 failed: Permission denied.
May  5 03:46:12 localhost sshd[11016]: error: Bind to port 1234 on :: failed: Permission denied.
May  5 03:46:12 localhost sshd[11016]: fatal: Cannot bind any address.
  • 蛤??!什么鬼,我明明用的是root怎么会提示权限不够?

解决方法

  • 于是谷歌了一下,发现CentOS还有另外一层保护,就是SELinux。
  • 执行一下semanage port -l | grep ssh就会发现ssh只允许监听22。
  • 好咯,那我就把1234添加进列表里面:
  • semanage port -a -t ssh_port_t -p tcp 1234
  • 再重启sshd,service ssh restart
  • 看一下service ssh status
sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
   Active: active (running) since Thu 2016-05-05 03:54:09 UTC; 7s ago
  Process: 10938 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
 Main PID: 11076 (sshd)
   CGroup: /system.slice/sshd.service
           └─11076 /usr/sbin/sshd -D

May 05 03:54:09 ixnetwork-uk1 systemd[1]: Started OpenSSH server daemon.
May 05 03:54:09 ixnetwork-uk1 sshd[11076]: Server listening on 0.0.0.0 port 1234.
May 05 03:54:09 ixnetwork-uk1 sshd[11076]: Server listening on :: port 1234.
  • 好了现在正常了

再说两句