如何检查 Linux 中 SSH 服务器是否正在运行

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何检查 Linux 系统上的 SSH 服务器是否正在运行。你将使用 systemctl status ssh 命令来验证服务的运行状态,使用 ss -tuln 命令来检查 SSH 端口是否开放并处于监听状态,以及使用 cat /etc/ssh/sshd_config 命令来查看 SSH 服务器的配置文件。这些步骤对于排查问题和验证 SSH 服务器功能至关重要。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/SystemInformationandMonitoringGroup -.-> linux/service("Service Managing") linux/RemoteAccessandNetworkingGroup -.-> linux/netstat("Network Monitoring") subgraph Lab Skills linux/cat -.-> lab-558785{{"如何检查 Linux 中 SSH 服务器是否正在运行"}} linux/service -.-> lab-558785{{"如何检查 Linux 中 SSH 服务器是否正在运行"}} linux/netstat -.-> lab-558785{{"如何检查 Linux 中 SSH 服务器是否正在运行"}} end

使用 systemctl status ssh 检查 SSH 服务

在这一步中,你将学习如何检查 Linux 系统上 SSH 服务的状态。SSH(Secure Shell,安全外壳协议)是一种用于安全连接到远程计算机的协议。它是系统管理和开发的基础工具。

在 Linux 中,像 SSH 这样的服务通常由 systemd(一个系统和服务管理器)管理。systemctl 命令用于与 systemd 进行交互。

要检查 SSH 服务的状态,你需要使用 systemctl status 命令,后面跟上服务名称 ssh

如果终端尚未打开,请打开它。你可以在桌面左侧找到 Xfce Terminal 图标。

在终端中输入以下命令并按回车键:

systemctl status ssh

你将看到类似如下的输出:

● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since ...
       Docs: man:sshd(8)
             man:ssh(1)
   Main PID: ... (sshd)
      Tasks: 1 (limit: ...)
     Memory: ...
        CPU: ...
     CGroup: /system.slice/ssh.service
             └─... /usr/sbin/sshd -D

...

让我们来分析一下输出中的重要部分:

  • ● ssh.service:这是服务的名称。
  • Loaded: loaded (...):表示服务配置文件已被 systemd 加载。
  • Active: active (running):这是最重要的部分。它表明 SSH 服务当前正在运行。如果服务已停止,它会显示类似 inactive (dead) 的信息。
  • since ...:显示服务启动的时间。
  • Main PID: ... (sshd):主 SSH 守护进程 (sshd) 的进程 ID。

此命令对于排查网络连接问题或验证服务是否按预期运行至关重要。

点击 继续 进入下一步。

使用 ss -tuln 验证 SSH 端口

在这一步中,你将学习如何验证系统上哪些网络端口处于开放和监听状态。这对于了解像 SSH 这样的服务如何被访问至关重要。

ss 命令是一个用于调查套接字(socket)的实用工具。套接字是网络上发送和接收数据的端点。我们将使用带有多个选项的 ss 命令来过滤输出:

  • -t:显示 TCP 套接字。SSH 使用 TCP 协议。
  • -u:显示 UDP 套接字。
  • -l:显示监听套接字。这些套接字正在等待传入的连接。
  • -n:不解析服务名称。这将显示端口号,而不是像 sshhttp 这样的名称。

结合这些选项,你可以查看所有处于监听状态的 TCP 和 UDP 端口及其对应的数字端口号。

在终端中输入以下命令并按回车键:

ss -tuln

你将看到列出各种监听端口的输出。查找与 SSH 相关的行,SSH 通常监听 22 端口。输出可能如下所示(确切的顺序和其他端口可能会有所不同):

Netid  State   Recv-Q  Send-Q   Local Address:Port   Peer Address:Port
tcp    LISTEN  0       128            0.0.0.0:22          0.0.0.0:*
tcp    LISTEN  0       128               [::]:22             [::]:*
udp    UNCONN  0       0              127.0.0.53%lo:53          0.0.0.0:*
udp    UNCONN  0       0                    0.0.0.0:68          0.0.0.0:*

在这个输出中:

  • Netid:网络协议(tcp 或 udp)。
  • State:套接字的状态(LISTEN 表示它正在等待连接)。
  • Local Address:Port:服务正在监听的本地 IP 地址和端口号。0.0.0.0 表示它正在监听所有可用的 IPv4 地址,[::] 表示它正在监听所有可用的 IPv6 地址。
  • Peer Address:Port:远程连接的地址和端口(对于监听套接字,这里是 *)。

你应该会看到表明 TCP 22 端口处于 LISTEN 状态的行。这确认了 SSH 服务正在运行,并且准备好在标准 SSH 端口上接受连接。

了解如何检查开放端口是进行网络故障排除和保障安全的一项基本技能。

点击 继续 进入下一步。

使用 cat /etc/ssh/sshd_config 检查 SSH 配置

在这最后一步中,你将查看 SSH 服务器的主配置文件。该文件包含控制 SSH 服务行为的设置,例如它监听的端口、允许连接的用户以及安全选项等。

SSH 守护进程 (sshd) 的配置文件通常位于 /etc/ssh/sshd_config/etc 目录是存储系统配置文件的地方。

要查看此文件的内容,你可以使用 cat 命令。cat 是一个简单的命令,它按顺序读取文件并将其内容打印到标准输出(即你的终端)。

在终端中输入以下命令并按回车键:

cat /etc/ssh/sshd_config

你将看到 sshd_config 文件的全部内容打印在终端中。输出会包含很多行,有些行以 # 开头(这些是注释,系统会忽略它们),其他行则定义了配置选项。

查找未被注释掉(不以 # 开头)的行。你可能会看到一些重要的指令,包括:

  • Port 22:指定 SSH 服务器监听的端口。默认情况下是 22。
  • ListenAddress 0.0.0.0:指定服务器监听的 IPv4 地址。
  • ListenAddress :::指定服务器监听的 IPv6 地址。
  • PermitRootLogin prohibit-password:控制 root 用户是否可以通过 SSH 直接登录。
  • PasswordAuthentication yes:控制是否允许使用密码进行身份验证。
## This is the sshd server system configuration file.
## See sshd_config(5) for more information.

## The systemd service file for sshd uses EnvironmentFile to load
## the SSHD_CONFIG environment variable, setting this to /etc/ssh/sshd_config.
## ...

Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key

## Ciphers and keying
#...

## Authentication:
LoginGraceTime 2m
PermitRootLogin prohibit-password
StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

#PubkeyAuthentication yes

## Expect .ssh/authorized_keys2 to be disregarded by default in future.
#AuthorizedKeysFile	.ssh/authorized_keys .ssh/authorized_keys2

#IgnoreRhosts yes
#RhostsRSAAuthentication no
#HostbasedAuthentication no
#...

PasswordAuthentication yes
#PermitEmptyPasswords no

ChallengeResponseAuthentication no

#...

阅读这样的配置文件是理解和管理 Linux 服务的一项关键技能。虽然在本次实验中你不会修改该文件,但了解它的位置以及如何查看其内容非常有用。

你现在已经成功检查了 SSH 服务的状态、验证了其监听端口并查看了其配置文件。你已经获得了使用基本 Linux 命令进行服务管理和网络检查的宝贵经验。

点击 继续 完成实验并查看你的进度!

总结

在本次实验中,你学习了如何检查 Linux 系统上的 SSH 服务器是否正在运行。你使用 systemctl status ssh 命令来验证服务的活动状态,并了解了诸如加载状态、活动状态和进程 ID 等关键信息。这个命令对于确认 SSH 服务是否可正常运行至关重要。

你还学习了如何使用 ss -tuln 命令验证 SSH 端口,以及如何使用 cat 命令查看位于 /etc/ssh/sshd_config 的 SSH 配置文件。这些步骤能让你更深入地了解 SSH 服务器的网络配置和设置。