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

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

目录
相关文章
|
应用服务中间件 网络安全 数据安全/隐私保护
网关服务器配置指南:实现自动DHCP地址分配、HTTP服务和SSH无密码登录。
哇哈哈,道具都准备好了,咱们的魔术秀就要开始了。现在,你的网关服务器已经魔法满满,自动分配IP,提供网页服务,SSH登录如入无人之境。而整个世界,只会知道效果,不会知道是你在幕后操控一切。这就是真正的数字世界魔法师,随手拈来,手到擒来。
674 14
|
Ubuntu Linux 网络安全
在Linux云服务器上限制特定IP进行SSH远程连接的设置
温馨提示,修改iptables规则时要格外小心,否则可能导致无法远程访问你的服务器。最好在掌握足够技术知识和理解清楚操作含义之后再进行。另外,在已经配置了防火墙的情况下,例如ufw(Ubuntu Firewall)或firewalld,需要按照相应的防火墙的规则来设置。
808 24
|
安全 Linux 网络安全
在Linux(CentOS和AWS)上安装更新的git2的方法并配置github-ssh
经过以上这些步骤,你现在就能在GitHub上顺利往返,如同海洋中的航海者自由驰骋。欢迎你加入码农的世界,享受这编程的乐趣吧!
681 10
|
安全 网络协议 Linux
Linux查 ssh端口号和服务状态
本指南详细介绍如何检查SSH服务的运行状态,包括通过进程命令验证服务启动、查看监听端口、检测系统服务状态以及防火墙配置。同时提供安全建议,如修改默认端口、禁用密码登录和定期更新系统,确保SSH服务稳定与安全。适用于不同Linux发行版(Systemd/SysVinit),帮助用户全面排查和优化SSH配置。
|
安全 网络安全 数据安全/隐私保护
Debian 12系统中允许Root远程SSH登录解决方法!
在 Debian 12 系统中开启 SSH 远程 Root 登录需修改 SSH 配置文件 (`sshd_config`),将 `PermitRootLogin` 设置为 `yes` 并确保密码认证启用。完成后重启 SSH 服务并验证连接。若防火墙启用,需放行端口 22。注意,直接开放 Root 登录可能带来安全风险,建议使用普通用户登录后切换至 Root。
2653 1
|
安全 Linux 网络安全
Linux端的ssh如何升级?
Linux端的ssh如何升级?
1549 59
|
监控 Ubuntu 安全
debian或Ubuntu中开启ssh允许root远程ssh登录的方法
在Debian或Ubuntu系统中启用root用户的SSH远程登录需要编辑SSH配置文件、设置root密码并重启SSH服务。虽然这可以在某些情况下提供便利,但必须注意安全性,通过使用强密码、限制IP访问、使用SSH密钥认证等方法来保护服务器的安全。
8568 5
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。
|
安全 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) 锁定或禁用用户账号以阻止所有类型的登录。每种方法都提供了详细的步骤指导。
3046 1
|
Linux 网络安全
Linux开启ssh
Linux开启ssh
458 0