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

技巧 2016年5月5日

前言

众所周知,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.
  • 好了现在正常了

再说两句

Tags

Howard Liu

在读大学生,平常使用窝窝屎提高血压和听网课使自己更快入睡。

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.