网站搜索

如何在 Fedora Linux 43 上设置和配置 SSH


安全外壳(SSH)是远程系统管理的一个基本工具,允许用户安全地连接和管理 Linux 服务器。如果你使用的是最新的 Fedora 版本,设置 SSH 非常简单。本指南将引导你完成在 Fedora Linux 43 及更早版本上 设置和配置 SSH 的步骤。

为什么使用 SSH?

SSH 使系统之间能够在不安全的网络上进行安全的加密通信。它取代了旧的、不安全的协议,如 Telnet 和 FTP。

使用 SSH,您可以:

  • 远程管理 Fedora 服务器。
  • 安全传输文件(使用scp或sftp)。
  • 自动化管理任务。

在 Fedora Linux 43 上配置 SSH 的步骤

在 Fedora 系统上设置 SSH 涉及以下步骤:

1. 安装 OpenSSH 服务器

Fedora 通常预装 OpenSSH。不过,如果缺失,可以使用以下命令安装:

sudo dnf install -y openssh-server

2. 启用并启动 SSH 服务

安装后,启动 SSH 服务并设置其在开机时运行:

sudo systemctl enable --now sshd

要验证 SSH 是否正在运行:

systemctl status sshd

你应该在输出中看到绿色的 active (running)。

● sshd.service - OpenSSH server daemon
     Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: disabled)
    Drop-In: /usr/lib/systemd/system/service.d
             └─10-timeout-abort.conf
     Active: active (running) since Wed 2025-11-26 16:10:28 IST; 35min ago
 Invocation: 918b3b0dc7d749b0b504b0410617b73b
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 867 (sshd)
      Tasks: 1 (limit: 9459)
     Memory: 1.7M (peak: 2M)
        CPU: 11ms
     CGroup: /system.slice/sshd.service
             └─867 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"
Nov 26 16:10:28 fedora systemd[1]: Starting sshd.service - OpenSSH server daemon...
Nov 26 16:10:28 fedora sshd[867]: Server listening on 0.0.0.0 port 22.
Nov 26 16:10:28 fedora systemd[1]: Started sshd.service - OpenSSH server daemon.
Nov 26 16:10:28 fedora sshd[867]: Server listening on :: port 22.

在 Fedora 43 中检查 SSH 状态

3. 配置防火墙

Fedora 使用 firewalld 来管理防火墙规则。通过以下方式打开 SSH 端口:

sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload

确认规则已应用:

sudo firewall-cmd --list-services

你应该在列表中看到 ssh。

dhcpv6-client samba-client ssh

4. 设置 SSH 密钥认证(推荐)

为了增加安全性,使用 SSH 密钥而不是密码。

警告: 在确认 SSH 密钥登录可用之前,不要禁用密码认证!否则,如果密钥未正确设置,您可能会被锁在服务器之外。

4.1. 生成 SSH 密钥对

在你的本地计算机上生成密钥对(不是 Fedora 服务器):

ssh-keygen -t ed25519 -C "your-email@example.com"

按 Enter 接受默认设置。可选择设置密码短语以增加安全性。

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/ostechnix/.ssh/id_ed25519): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/ostechnix/.ssh/id_ed25519
Your public key has been saved in /home/ostechnix/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:smI0vudP4BHRayrjGXZZghHhE6h8qin9jgifPs+6JDQ sk@ostechnix.local
The key's randomart image is:
+--[ED25519 256]--+
|   .+o..         |
|  .... ..        |
|..  oo.  .       |
|.. .....+        |
| Eo o +*S        |
|...o=o+=         |
|+o.o+*o .        |
|==o=oo..         |
|o.BB*o...        |
+----[SHA256]-----+

4.2. 将 SSH 公钥复制到 Fedora

有两种方法。你可以使用ssh-copy-id命令。这是最简单的方法。或者,你也可以手动复制公钥。

使用 ssh-copy-id 命令复制 SSH 公钥:

将公钥复制到 Fedora 系统:

ssh-copy-id yourusername@your-fedora-ip

示例:

ssh-copy-id ostechnix@192.168.1.43

这里,ostechnix 是用户名,192.168.1.43 是我的 Fedora Linux 系统的 IP 地址。

您需要在此步骤中输入一次 Fedora 系统的密码。

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 2 key(s) remain to be installed -- if you are prompted now it is to install the new keys
ostechnix@192.168.1.43's password: 
Number of key(s) added: 2
Now try logging into the machine, with:   "ssh 'ostechnix@192.168.1.43'"
and check to make sure that only the key(s) you wanted were added.

手动复制 SSH 公钥:

你也可以使用此命令手动添加公钥:

cat ~/.ssh/id_ed25519.pub | ssh yourusername@your-fedora-ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

确保正确的文件权限:

ssh yourusername@your-fedora-ip "chmod 600 ~/.ssh/authorized_keys && chmod 700 ~/.ssh"

登录到 Fedora:

现在,测试 SSH 密钥登录(在禁用密码之前!):

ssh yourusername@your-fedora-ip

如果成功,你将无需密码即可登录。如果失败,请检查服务器上的 ~/.ssh/authorized_keys,然后重试 ssh-copy-id。

现在如果使用 SSH 密钥,您可以安全地禁用密码认证。

注意:仅在确认关键登录有效后执行此操作。

首先,在你的 Fedora 系统中备份原始配置文件。

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

接下来,编辑 /etc/ssh/sshd_config 并设置:

PasswordAuthentication no

保存并退出,然后重启 SSH:

sudo systemctl restart sshd

5. 通过 SSH 连接到您的 Fedora 系统

一旦配置了 SSH,请使用以下方式连接:

ssh yourusername@your-fedora-ip

示例:

ssh ostechnix@192.168.1.43

通过SSH登录到Fedora 43

6. 保护您的 SSH 配置

为了增强 SSH 安全性,您可能需要进行以下推荐的安全增强措施。

在你的 Fedora 系统中编辑 SSH 配置文件:

sudo nano /etc/ssh/sshd_config

1. 禁用 root 登录

找到以下这一行:

#PermitRootLogin yes

并将其值设置为否。

PermitRootLogin no

2. 允许特定用户

AllowUsers yourusername

7.(可选)在 Fedora 上更改默认 SSH 端口

为了增强安全性,更改默认的 SSH 端口(默认是 22):

sudo nano /etc/ssh/sshd_config

找到以下这一行:

#Port 22

取消注释它并设置你选择的不同端口:

Port 2222

确保端口空闲,且当前没有被其他服务使用。

更改 SSH 默认端口

保存文件并关闭它。

更新防火墙:

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload

重启 SSH 服务:

sudo systemctl restart sshd

如果 SSH 正在运行在 非默认端口 上,SELinux 会阻止它,除非明确允许。

检查当前的 SSH SELinux 策略:

sudo semanage port -l | grep ssh

如果您的自定义端口(例如 2222)缺失,请添加它:

sudo semanage port -a -t ssh_port_t -p tcp 2222

重启 SSH 并重新加载 SELinux 策略:

sudo systemctl restart sshd
sudo restorecon -v /etc/ssh/sshd_config

验证 SSH 是否在新端口上监听:

sudo ss -tlnp | grep sshd

它将列出允许的 SSH 端口:

LISTEN 0      128          0.0.0.0:2222       0.0.0.0:*    users:(("sshd",pid=4999,fd=6))           
LISTEN 0      128             [::]:2222          [::]:*    users:(("sshd",pid=4999,fd=7))  

使用新端口连接:

ssh -p 2222 yourusername@your-fedora-ip

通过使用不同端口通过 SSH 登录 Fedora

被锁账户?重新启用 SSH 密码认证

假设你在正确设置基于密钥的认证之前禁用了密码认证。现在你被锁在了你的 Fedora 系统之外。如何重新启用密码认证?很简单!

通过控制台或恢复模式访问服务器

如果您的服务器是物理机,请使用键盘和显示器直接访问它。如果它是VPS或云实例,请检查您的托管提供商是否提供基于网页的控制台(例如,通过控制面板)。

一旦你获得了控制台访问权限,请进行以下步骤:

进入救援模式

重启系统,在 GRUB 菜单上,按 e 来编辑启动项。

找到以 linux 或 linux16 开头的行,并在该行末尾添加以下内容:

systemd.unit=rescue.target

按 Ctrl + X 使用这些选项启动。

一旦进入救援模式,您将拥有 root shell 访问权限。

重新启用 SSH 认证

现在,修改 SSH 配置文件:

nano /etc/ssh/sshd_config

查找并更改以下行:

PasswordAuthentication yes
PubkeyAuthentication yes

保存并退出(Ctrl + X,然后 Y,再按 Enter)。

重启SSH:

systemctl restart sshd

添加新的 SSH 密钥(可选)

如果你打算使用基于密钥的认证,请确保你的公钥已在 ~/.ssh/authorized_keys 文件中:

mkdir -p ~/.ssh
echo "your-public-key-here" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

重启并测试 SSH 访问

退出救援模式并重启:

reboot

尝试通过 SSH 登录:

ssh user@your-fedora-ip

结论

在 Fedora 上设置 SSH 是远程访问和服务器管理的重要步骤。通过保护您的 SSH 配置,您可以防止未经授权的访问并提高系统安全性。

下一篇阅读:

  • 如何在 Linux 中使用 Fail2ban 防止 SSH 暴力破解攻击
  • 如何在 Linux 中为 SSH 设置多因素认证
  • 如何在 Linux 中允许或拒绝特定用户或组的 SSH 访问