Linux系统默认情况下,是可以通过ssh以root权限登录的。但出于安全考虑,这样的权限是不合适的,黑客可以通过密码暴利破解进入你的系统;另外也防止一些开发或者对系统不熟悉的人员进入系统横冲直撞,进行一些危险操作。
禁止root用户通过ssh登录,是通过操作sshd_config配置文件来实现。
1、打开ssh配置文件
$ vim /etc/ssh/sshd_config
2、找到文件中下面一行文字
#PermitRootLogin no也有可能是#PermitRootLogin yes
3、去掉该行前面的#号,使其成为下面这样:
PermitRootLogin no
4、添加用户admin
useradd admin
5、设置admin用户密码
passwd admin **********
6、查看用户是否添加成功
cat /etc/passwd |cut -f 1 -d :
7、打开sshd_config文件,然后在文件的末尾加上下面一行文字,admin即为允许通过ssh登录的用户
vim /etc/ssh/sshd_config
AllowUsers admin
8、修改ssh登录端口号:
vim /etc/ssh/sshd_config
/Port 找到端口配置
修改为
Port 22
Port 7777
注:先别把22端口关闭,要不7777登不上去,就只能登陆阿里云的web端进行远程连接了
9、重启ssh服务
Ubuntu: $ /etc/init.d/sshd restart
Centos: service sshd restart
接下来试着用root账号再登陆发现拒绝登陆,然后在用普通用户登录即可。如果通过普通用户登录了需要root权限进行相关操作,可以通过su -命令切换到root账号。
如果机器里有很多普通用户,而我们又不希望所有的用户都能通过shh登录,也可以通过sshd_config配置来实现。
以下步骤是非必须的,一般生产环境会开防火墙
10、查看默认防火墙状态
firewall-cmd --state
注:CentOS7之前用来管理防火墙的工具是iptable,7之后使用的是Firewall
11、检查防火墙服务的状态
systemctl list-unit-files|grep firewalld.service
12、打开防火墙,打开防火墙后,可能会造成ssh连接断开的情况,此时需要在浏览器中登录阿里云web远程连接,在远程连接中执行13步骤,然后即可再次通过ssh连接服务器
systemctl start firewalld.service
13、为防火墙添加开放端口(按需添加)
firewall-cmd --zone=public --add-port=7777/tcp --permanent
firewall-cmd --zone=public --add-port=9001/tcp --permanent
firewall-cmd --zone=public --add-port=9742/tcp --permanent
firewall-cmd --zone=public --add-port=3456/tcp --permanent
firewall-cmd --zone=public --add-port=9876/tcp --permanent
firewall-cmd --zone=public --add-port=8081/tcp --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=8888/tcp --permanent
firewall-cmd --zone=public --add-port=8889/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=23/tcp --permanent
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=1433/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=5432/tcp --permanent
firewall-cmd --zone=public --add-port=1521/tcp --permanent
14、查看开放的端口和服务
firewall-cmd --permanent --zone=public --list-services
firewall-cmd --permanent --zone=public --list-ports
注:一个服务对应一个端口,这里的服务是底层服务(例如http 、ssh、ftp)打开了端口后需要打开服务才能访问服务
15、查看可以打开的服务
firewall-cmd --get-services
16、添加服务到防火墙
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-service=ftp
firewall-cmd --permanent --add-service=dhcp
firewall-cmd --permanent --add-service=dhcpv6
firewall-cmd --permanent --add-service=dhcpv6-client
firewall-cmd --permanent --add-service=dns
firewall-cmd --permanent --add-service=docker-registry
firewall-cmd --permanent --add-service=elasticsearch
firewall-cmd --permanent --add-service=privoxy
firewall-cmd --permanent --add-service=proxy-dhcp
firewall-cmd --permanent --add-service=smtp
firewall-cmd --permanent --add-service=smtp-submission
firewall-cmd --permanent --add-service=telnet
17、查看已经打开的服务
firewall-cmd --permanent --zone=public --list-services
18、加载防火墙新策略
firewall-cmd --reload
19、开启防火墙
systemctl start firewalld.service
20、重启防火墙
systemctl restart firewalld.service
21、开机启动防火墙
systemctl enable firewalld.service
22、如果防火墙有配置问题,可以先关掉防火墙
systemctl stop firewalld.service