sshd 服务
在 Linux 操作系统上,所有的软件都是以进程的方式提供服务。要使用一个命令,必然有一个在后台运行着的服务。比如使用 systemctl
命令,对应的就是 systemd
服务。而使用 ssh 方式登录,背后就是 sshd 服务。
sshd 服务使用 SSH 协议,可以用来进行远程控制, 或在计算机之间传送文件,相比较之前用 telnet 方式来传输文件要安全很多,因为telnet使用明文传输,ssh是加密传输。
本文,来讲述一些 sshd 服务的配置,帮助打造一个更安全的服务器环境。
拿到新服务器的第一步,出于安全考虑,先禁用掉 root 用户 和 修改默认的 22 端口号。
这是因为所有 linux 系统默认的管理员用户名就是 root,默认的 SSH 协议通信端口就是 22 。
如果有黑客尝试暴力破解,又如果你的口令设置的很简单,那么很容易就会置于不安全的环境。
创建一个普通用户,并实现 SSH 免密登录
创建新用户
先使用 root 用户登录到服务器,使用 useradd
命令创建一个用户账号:
# 创建一个新用户
useradd kunwu
# 给用户设置密码。注意密码中不能包含用户名。
passwd kun
使用 useradd
命令创建的用户帐号,会保存在 /etc/passwd
文件中。
查看下刚才新添加的用户的记录:
[root@ecs-221238 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
......
kunwu:x:1000:1000::/home/kunwu:/bin/bash
此时在本地可以以 kunwu 的身份,去登陆服务器了,但是还是需要密码:
本地计算机创建 SSH 密钥并部署到服务器
如果本地电脑已经生成过 SSH 密钥,可以直接用。如果还没有,下面的步骤都可以参考上文。
在本地计算机,生成一对 SSH 密钥:
ssh-keygen -t rsa
将 SSH 公钥,以 kunwu 的用户身份部署到服务器上,配置免密登录:
ssh-copy-id kunwu@<服务器 IP>
之后,在本地计算机中,就可以使用 kunwu 进行免密登录了:
ssh kunwu@<服务器 IP>
现在可以使用一个 普通用户登录实现免密登录了,但是普通用户不具备管理员权限,所以接下来要给这个普通用户赋予管理员的权限。
配置 kunwu 用户支持 sudo 命令
使用 root 用户登录服务器,配置 kunwu 支持 sudo 命令。
vim /etc/sudoers
找到 "Allow root to run any commands anywhere "这一行:
按 i
进入编辑模式,会提示该文件只读,是否确认修改:
继续修改,新添加一行配置:
然后保存退出,会再次提示是只读文件,要使用 !
强制保存:
到这里,就创建好了一个具有管理员权限的用户。
本地电脑使用 kunwu 用户登录,尝试使用 sudo 命令。
普通用户是无法访问 root 目录的:
使用 su
命令切换为管理员身份,切换时是需要输入用户密码的:
su - kunwu
现在 kunwu 就具备了 root 用户的权限了。
修改 sshd 的配置
现在到了重头戏了。
使用 root 用户,编辑 sshd 服务的配置文件:
vim /etc/ssh/sshd_config
主要修改三个地方:
- 禁用 root 用户登录。
PermitRootLogin no
- 修改 22 端口为其他。
Port 23456
- 禁用密码登录。只支持受信任的机器通过 SSH 公钥免密登录。
PasswordAuthentication no
找到这几个地方,打开注释并修改掉:
然后保存退出。
一般情况下,个人的服务器不需要这么严格的配置,难免有使用其他机器登录服务器的时候,所以我只修改了禁止 root 登录和端口号,并没有禁止掉使用密码登录。这个配置视需求而定。
重启 sshd 服务
修改完配置,需要重启 sshd 服务。
systemctl restart sshd
注意事项:修改 sshd 配置文件时,一定要小心。如果语法出现错误,sshd 服务会退出,此时只能去云服务器控制台中远程登录解决了。
这之后,需要重新配置一番,到云服务器控制台安全组中开放新的23456端口,并且以后再登录服务器,只能使用 kunwu 用户了。
在使用 ssh
命令时,需要通过 -p
来指定新的端口号了:
ssh kunwu@<服务器 IP> -p 23456
使用 root 用户,或者使用默认的 22 端口号,都会报错:
这样,基本上就避免了黑客通过暴力破解的方式,使用 root 用户通过 22 端口登录服务器。
小结
对于个人使用的服务器,一般设置一个新的端口号,禁止使用 root 用户登录就足够了。
设置的过程有些繁琐,需要在多个环境中,多个用户身份中切来切去,一定要耐心。