解决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.
- 好了现在正常了
再说两句
这阵子考试一直都没时间写博文,今天难得写了篇当然要多讲点废话- 参考自Change SSH port in CentOS with SELinux