如何在 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-server2. 启用并启动 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.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 ssh4. 设置 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 sshd5. 通过 SSH 连接到您的 Fedora 系统
一旦配置了 SSH,请使用以下方式连接:
ssh yourusername@your-fedora-ip示例:
ssh ostechnix@192.168.1.436. 保护您的 SSH 配置
为了增强 SSH 安全性,您可能需要进行以下推荐的安全增强措施。
在你的 Fedora 系统中编辑 SSH 配置文件:
sudo nano /etc/ssh/sshd_config1. 禁用 root 登录
找到以下这一行:
#PermitRootLogin yes并将其值设置为否。
PermitRootLogin no2. 允许特定用户
AllowUsers yourusername7.(可选)在 Fedora 上更改默认 SSH 端口
为了增强安全性,更改默认的 SSH 端口(默认是 22):
sudo nano /etc/ssh/sshd_config找到以下这一行:
#Port 22取消注释它并设置你选择的不同端口:
Port 2222确保端口空闲,且当前没有被其他服务使用。
保存文件并关闭它。
更新防火墙:
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 系统之外。如何重新启用密码认证?很简单!
通过控制台或恢复模式访问服务器
如果您的服务器是物理机,请使用键盘和显示器直接访问它。如果它是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 配置,您可以防止未经授权的访问并提高系统安全性。
下一篇阅读:



