上手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 用户登录就足够了。

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

目录
相关文章
|
Linux 网络安全 Docker
盘古栈云,创建带ssh服务的linux容器
创建带ssh服务的linux容器
574 146
|
Unix Linux Shell
指定端口-SSH连接的目标(告别 22 端口暴力破解)
本文介绍了 SSH 命令 `ssh -p 44907 root@IP` 的含义与使用方法,包括命令结构拆解、完整示例及执行过程详解,帮助用户安全地远程登录服务器。
1825 0
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
845 11
|
监控 Linux 网络安全
FinalShell SSH工具下载,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux
FinalShell是一款国人开发的多平台SSH客户端工具,支持Windows、Mac OS X和Linux系统。它提供一体化服务器管理功能,支持shell和sftp同屏显示,命令自动提示,操作便捷。软件还具备加速功能,提升访问服务器速度,适合普通用户和专业人士使用。
4239 0
|
安全 网络协议 Linux
Linux查 ssh端口号和服务状态
本指南详细介绍如何检查SSH服务的运行状态,包括通过进程命令验证服务启动、查看监听端口、检测系统服务状态以及防火墙配置。同时提供安全建议,如修改默认端口、禁用密码登录和定期更新系统,确保SSH服务稳定与安全。适用于不同Linux发行版(Systemd/SysVinit),帮助用户全面排查和优化SSH配置。
|
应用服务中间件 Linux 开发者
用的到linux-tomcat端口占用排查-Day5
通过本文的介绍,详细讲解了在CentOS 8系统上排查和解决Tomcat端口占用问题的方法。从使用 `netstat`、`lsof`和 `ss`命令检查端口占用情况,到使用 `ps`和 `top`命令查找和停止占用端口的进程,再到修改Tomcat端口配置,最后介绍了自动化脚本的方法。希望本文能帮助系统管理员和开发者有效地解决端口占用问题,确保Tomcat服务器的正常运行。
740 11
|
关系型数据库 MySQL Linux
Linux下mysql数据库的导入与导出以及查看端口
本文详细介绍了在Linux下如何导入和导出MySQL数据库,以及查看MySQL运行端口的方法。通过这些操作,用户可以轻松进行数据库的备份与恢复,以及确认MySQL服务的运行状态和端口。掌握这些技能,对于日常数据库管理和维护非常重要。
826 8
|
运维 网络安全
解决ssh: connect to host IP port 22: Connection timed out报错(scp传文件指定端口)
通过这些步骤和方法,您可以有效解决“ssh: connect to host IP port 22: Connection timed out”问题,并顺利使用 `scp`命令传输文件。
17836 7
|
网络协议 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` 命令中正确指定端口,可以有效解决连接超时的问题,确保文件传输的顺利进行。希望本文提供的解决方案能帮助您快速定位并解决该错误。
4724 3
|
安全 Linux 网络安全
Linux 开放的端口太多了?教你一招找出所有开放的端口,然后直接干掉!
在 Linux 系统中,端口管理至关重要。本文介绍了如何使用 `netstat`、`lsof` 和 `nmap` 等工具查找开放端口,并通过关闭相关服务、修改防火墙规则或禁用网络接口来关闭这些端口,以提高系统安全性。注意不要随意关闭重要端口,谨慎操作并备份数据。
1273 3