上手Linux:禁用 root 用户,修改22端口,使用 ssh 登录

简介: 本文介绍了在 linux 系统中,如何禁用 root 用户登录,修改默认的 22 端口号,以及设置只能使用 SSH 秘钥登录的方式,从而在一定程度上提高了系统的安全性。

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

image-20220810150227964

使用 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 的身份,去登陆服务器了,但是还是需要密码:

image-20220810151342524

本地计算机创建 SSH 密钥并部署到服务器

如果本地电脑已经生成过 SSH 密钥,可以直接用。如果还没有,下面的步骤都可以参考上文。

在本地计算机,生成一对 SSH 密钥:

ssh-keygen -t rsa

将 SSH 公钥,以 kunwu 的用户身份部署到服务器上,配置免密登录:

ssh-copy-id kunwu@<服务器 IP>

image-20220810151608370

之后,在本地计算机中,就可以使用 kunwu 进行免密登录了:

ssh kunwu@<服务器 IP>

image-20220810151733161

现在可以使用一个 普通用户登录实现免密登录了,但是普通用户不具备管理员权限,所以接下来要给这个普通用户赋予管理员的权限。

配置 kunwu 用户支持 sudo 命令

使用 root 用户登录服务器,配置 kunwu 支持 sudo 命令

vim /etc/sudoers

找到 "Allow root to run any commands anywhere "这一行:

image-20220810152108910

i 进入编辑模式,会提示该文件只读,是否确认修改:

image-20220810152220141

继续修改,新添加一行配置:

image-20220810152301892

然后保存退出,会再次提示是只读文件,要使用 ! 强制保存:

image-20220810152407849

image-20220810152453608

到这里,就创建好了一个具有管理员权限的用户。

本地电脑使用 kunwu 用户登录,尝试使用 sudo 命令。

普通用户是无法访问 root 目录的:

image-20220810152705580

使用 su 命令切换为管理员身份,切换时是需要输入用户密码的:

su - kunwu

image-20220810152857341

现在 kunwu 就具备了 root 用户的权限了。

修改 sshd 的配置

现在到了重头戏了。

使用 root 用户,编辑 sshd 服务的配置文件:

vim /etc/ssh/sshd_config

主要修改三个地方:

  1. 禁用 root 用户登录。PermitRootLogin no
  2. 修改 22 端口为其他。Port 23456
  3. 禁用密码登录。只支持受信任的机器通过 SSH 公钥免密登录。PasswordAuthentication no

找到这几个地方,打开注释并修改掉:

image-20220810154330782

image-20220810154247083

然后保存退出。

一般情况下,个人的服务器不需要这么严格的配置,难免有使用其他机器登录服务器的时候,所以我只修改了禁止 root 登录和端口号,并没有禁止掉使用密码登录。这个配置视需求而定。

重启 sshd 服务

修改完配置,需要重启 sshd 服务。

systemctl restart sshd

注意事项:修改 sshd 配置文件时,一定要小心。如果语法出现错误,sshd 服务会退出,此时只能去云服务器控制台中远程登录解决了。

这之后,需要重新配置一番,到云服务器控制台安全组中开放新的23456端口,并且以后再登录服务器,只能使用 kunwu 用户了

在使用 ssh 命令时,需要通过 -p 来指定新的端口号了:

ssh kunwu@<服务器 IP> -p 23456

image-20220810160003494

使用 root 用户,或者使用默认的 22 端口号,都会报错:

image-20220810160116846

这样,基本上就避免了黑客通过暴力破解的方式,使用 root 用户通过 22 端口登录服务器。

小结

对于个人使用的服务器,一般设置一个新的端口号,禁止使用 root 用户登录就足够了。

设置的过程有些繁琐,需要在多个环境中,多个用户身份中切来切去,一定要耐心。

目录
相关文章
|
18天前
|
安全 Linux 数据安全/隐私保护
Linux权限揭秘“Root与Sudo”
Root用户是Linux系统中的超级用户,拥有对系统的完全控制权。Root用户几乎可以执行任何命令,修改任何文件,甚至删除系统上的所有内容。因此,Root用户的使用需要非常谨慎,以避免潜在的安全风险。
33 6
|
1月前
|
安全 Linux 数据安全/隐私保护
linux root登陆,密码正确但,错误提示su: Authentication failure
通过系统化的排查和解决方案,可以有效应对 `su: Authentication failure` 问题,确保系统安全和用户权限的正确管理。
212 36
|
3月前
|
监控 Ubuntu 安全
debian或Ubuntu中开启ssh允许root远程ssh登录的方法
在Debian或Ubuntu系统中启用root用户的SSH远程登录需要编辑SSH配置文件、设置root密码并重启SSH服务。虽然这可以在某些情况下提供便利,但必须注意安全性,通过使用强密码、限制IP访问、使用SSH密钥认证等方法来保护服务器的安全。
1028 5
|
3月前
|
网络协议 Ubuntu Linux
解决ssh: connect to host IP port 22: Connection timed out报错(scp传文件指定端口)
解决 `ssh: connect to host IP port 22: Connection timed out` 报错涉及检查 SSH 服务状态、防火墙配置、网络连通性和主机名解析等多个方面。通过逐步排查上述问题,并在 `scp` 命令中正确指定端口,可以有效解决连接超时的问题,确保文件传输的顺利进行。希望本文提供的解决方案能帮助您快速定位并解决该错误。
474 3
|
3月前
|
运维 网络安全
解决ssh: connect to host IP port 22: Connection timed out报错(scp传文件指定端口)
通过这些步骤和方法,您可以有效解决“ssh: connect to host IP port 22: Connection timed out”问题,并顺利使用 `scp`命令传输文件。
1643 7
|
7月前
|
安全 Shell Linux
如何禁止某个用户使用ssh登录
本文介绍了五种禁止用户通过SSH登录的方法:1) 修改`/etc/ssh/sshd_config`文件中的`DenyUsers`和`DenyGroups`来阻止特定用户或用户组登录;2) 将用户的默认shell设置为`/usr/sbin/nologin`或`/bin/false`以禁用其SSH访问;3) 利用PAM(可插入认证模块)通过编辑`/etc/security/sshd.conf`来限制登录权限;4) 通过编辑`/etc/hosts.deny`文件拒绝特定用户的SSH访问;5) 锁定或禁用用户账号以阻止所有类型的登录。每种方法都提供了详细的步骤指导。
932 1
|
7月前
|
JavaScript 应用服务中间件 Linux
【应用服务 App Service】解决无法从Azure门户SSH登录问题
【应用服务 App Service】解决无法从Azure门户SSH登录问题
|
7月前
|
安全 Linux 网络安全
在Linux中,使用rsync同步数据时,假如采用的是ssh方式,并且目标机器的sshd端端并不是默认的22端口,该如何做?
在Linux中,使用rsync同步数据时,假如采用的是ssh方式,并且目标机器的sshd端端并不是默认的22端口,该如何做?
|
7月前
|
安全 Linux 数据安全/隐私保护
驾驭Linux的权力:Root与Sudo
在 Linux 系统中,权限管理至关重要,Root 用户与 Sudo 命令为核心组件。Root 作为超级用户,拥有最高权限,可执行任意命令,但也带来较高安全风险,建议仅在必要时使用。Sudo 则允许系统管理员授予普通用户临时的 Root 权限以执行特定命令,提升了系统的安全性和管理灵活性。通过合理配置 Sudoers 文件,可以实现对用户权限的精细化管理。综合运用 Root 和 Sudo 可确保系统的安全稳定运行。
157 1
|
7月前
|
安全 关系型数据库 MySQL
在Linux中,如何重置 mysql root 密码?
在Linux中,如何重置 mysql root 密码?