Operations

How to Set Up SSH Key-Based Authentication on RHEL 9 — step-by-step RHEL 9 tutorial on Progressive Robot

How to Set Up SSH Key-Based Authentication on RHEL 9

SSH key-based authentication is the gold standard for remote server access. Unlike passwords, SSH keys cannot be guessed by brute-force attacks. An Ed25519 private key is a 256-bit secret that would take longer than the age of the universe to crack by exhaustive search. When combined with a key passphrase, you have two-factor authentication: something […]

Read more
How to Configure Fail2Ban to Protect SSH on RHEL 9 — step-by-step RHEL 9 tutorial on Progressive Robot

How to Configure Fail2Ban to Protect SSH on RHEL 9

Even with SSH key authentication enabled, a badly configured or temporarily accessible server with password auth still faces a constant barrage of brute-force login attempts. Fail2ban monitors log files for authentication failures, counts them per source IP, and when a configured threshold is crossed it issues a temporary ban by injecting a drop rule via […]

Read more
How to Set a Hostname and FQDN on RHEL 9 — step-by-step RHEL 9 tutorial on Progressive Robot

How to Set a Hostname and FQDN on RHEL 9

A server’s hostname is its identity on the network. The fully qualified domain name (FQDN) combines the short hostname with the DNS domain, forming an address like web01.example.com. Many services depend on a correctly configured hostname and FQDN to function properly: email servers use the FQDN in SMTP HELO greetings (incorrect values cause delivery rejections), […]

Read more
How to Sync Time with Chrony on RHEL 9 — step-by-step RHEL 9 tutorial on Progressive Robot

How to Sync Time with Chrony on RHEL 9

Accurate time synchronization is not optional on a server — it is a hard requirement. TLS certificate validation fails when the clock is wrong by more than a few minutes. Kerberos authentication rejects tickets with a clock skew over 5 minutes. Cron jobs fire at the wrong time. Log correlation across multiple servers becomes impossible […]

Read more
How to Configure Automatic Security Updates on RHEL 9 — step-by-step RHEL 9 tutorial on Progressive Robot

How to Configure Automatic Security Updates on RHEL 9

Unpatched software is the leading cause of server compromise. The majority of publicly disclosed vulnerabilities already have patches available by the time attackers start actively exploiting them — the window between patch availability and active exploitation has shrunk from months to days. Manually patching servers is error-prone and inconsistent at scale. Automatic security updates ensure […]

Read more
How to Create and Manage Swap Space on RHEL 9 — step-by-step RHEL 9 tutorial on Progressive Robot

How to Create and Manage Swap Space on RHEL 9

Swap space acts as overflow memory. When the physical RAM is full, the Linux kernel moves the least-recently-used memory pages to swap on disk, freeing physical RAM for active processes. Without swap, when RAM is exhausted the Out of Memory (OOM) killer terminates processes — often the largest one, which is frequently your database or […]

Read more
How to Monitor System Resources with htop, top and vmstat on RHEL 9 — step-by-step RHEL 9 tutorial on Progressive Robot

How to Monitor System Resources with htop, top and vmstat on RHEL 9

Every Linux administrator needs a reliable toolkit for answering the question “why is this server slow?” The answer is almost always in one of four resources: CPU, memory, disk I/O, or network. RHEL 9 includes several powerful tools for diagnosing resource contention: top is included in every base installation and provides a real-time process table; […]

Read more
How to Manage Systemd Services and Units on RHEL 9 — step-by-step RHEL 9 tutorial on Progressive Robot

How to Manage Systemd Services and Units on RHEL 9

Systemd is the init system and service manager for RHEL 9 — it is PID 1, the parent of every other process on the system. Understanding how to manage systemd services is foundational to every other administrative task: installing Nginx means enabling the nginx service; configuring a database means understanding its unit file; debugging a […]

Read more
How to Configure sudo and Sudoers on RHEL 9 — step-by-step RHEL 9 tutorial on Progressive Robot

How to Configure sudo and Sudoers on RHEL 9

The sudo (superuser do) tool allows designated users to run commands with elevated privileges without sharing the root password. This is fundamental to the principle of least privilege: each administrator gets exactly the access they need for their role, no more. When access is misconfigured — for example with blanket ALL=(ALL) ALL entries or unsafe […]

Read more
How to Set Up a Bash Profile and Environment Variables on RHEL 9 — step-by-step RHEL 9 tutorial on Progressive Robot

How to Set Up a Bash Profile and Environment Variables on RHEL 9

Every time you open a terminal on RHEL 9, Bash reads one or more startup files before presenting you with a prompt. Which files are read depends on whether the shell is a login shell (started by SSH, a console login, or su -) or an interactive non-login shell (a new terminal window in a […]

Read more
CHAT