Linux SSH安全密钥认证与端口防护实战指南在 Linux 服务器管理中SSHSecure Shell是用于安全远程登录和管理服务器的事实标准。默认配置的 SSH 服务存在安全隐患容易受到暴力破解等攻击。因此对 SSH 服务进行安全加固至关重要。本指南将介绍如何通过Linux SSH 密钥认证、修改默认端口及配置防火墙等手段提升Linux SSH 安全性有效防范潜在的安全风险。我们将以 CentOS/RHEL 7/8/9 或 Ubuntu 18.04/20.04/22.04 等常见发行版为例讲解具体操作步骤。Linux SSH安全禁用密码认证启用密钥认证使用密码进行 SSH 认证的安全性较低容易受到暴力破解攻击。为提高 Linux SSH 安全性强烈建议禁用密码认证启用密钥认证。密钥认证基于公钥密码学使用密钥对公钥和私钥进行身份验证。私钥保存在客户端公钥保存在服务器端。本节将详细介绍如何生成密钥对、上传公钥以及禁用密码认证从而避免暴力破解风险。生成 SSH 密钥对RSA首先需要在客户端例如您的本地电脑生成 SSH 密钥对。可以使用ssh-keygen命令。以下命令生成一个 4096 位的 RSA 密钥对ssh-keygen -t rsa -b 4096执行该命令后会在用户目录下生成.ssh目录其中id_rsa是私钥id_rsa.pub是公钥。请务必妥善保管私钥切勿泄露给他人。私钥丢失可能导致无法登录服务器。上传 SSH 公钥到服务器生成密钥对后需要将公钥上传到服务器以便服务器能够使用公钥验证客户端的身份。可以使用ssh-copy-id命令简化上传过程例如ssh-copy-id useryour_server_ip该命令会自动将公钥添加到服务器上的~/.ssh/authorized_keys文件中。如果ssh-copy-id命令不可用也可以手动将id_rsa.pub的内容追加到服务器上的~/.ssh/authorized_keys文件中。为了保证 Linux SSH 安全性务必确保.ssh目录的权限是700authorized_keys文件的权限是600。手动上传公钥的步骤如下使用scp或其他文件传输工具将id_rsa.pub文件上传到服务器的临时目录例如/tmp。在服务器上使用以下命令将公钥添加到~/.ssh/authorized_keys文件中cat /tmp/id_rsa.pub ~/.ssh/authorized_keys设置正确的权限chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys禁用 SSH 密码认证成功上传公钥后就可以禁用密码认证了。编辑服务器上的 SSH 配置文件/etc/ssh/sshd_config。找到以下选项并修改为PasswordAuthentication no ChallengeResponseAuthentication no # 如果有的话也禁用 UsePAM no # 建议禁用PAM认证除非你有特殊需求保存文件后重启 SSH 服务使配置生效systemctl restart sshd重要提示在禁用密码认证之前请务必确保您已经成功配置了密钥认证并且能够使用密钥登录服务器。否则您可能会因为无法通过密码认证登录而失去对服务器的访问权限。建议在一个新的终端窗口中测试密钥认证是否生效确认无误后再禁用密码认证。通过禁用密码认证并启用密钥认证可以有效防止暴力破解提高 SSH 安全性。Linux SSH安全修改默认端口配置防火墙SSH 默认使用 22 端口进行通信但攻击者通常会扫描服务器的 22 端口尝试进行攻击。修改默认端口可以增加攻击者扫描和攻击的难度提高 Linux SSH 安全性。同时配置防火墙可以限制对 SSH 端口的访问只允许特定的 IP 地址或 IP 段访问 SSH 服务。本节将介绍如何修改 SSH 端口并配置防火墙规则以降低被恶意扫描和攻击的风险。修改 SSH 默认端口编辑 SSH 配置文件/etc/ssh/sshd_config。找到以下选项并修改为Port 2222 # 修改为其他未被使用的端口例如2222建议选择一个大于 1024 且未被其他服务使用的端口。保存文件后重启 SSH 服务systemctl restart sshd注意修改端口后需要同时更新防火墙规则允许新的端口通过。客户端连接时也需要指定新的端口例如ssh -p 2222 useryour_server_ip。配置防火墙规则使用firewalld或iptables配置防火墙只允许特定的 IP 地址访问 SSH 端口。以firewalld为例以下命令允许来自192.168.1.0/24网段的 IP 地址访问 2222 端口firewall-cmd --permanent --add-port2222/tcp firewall-cmd --permanent --add-source192.168.1.0/24 --add-port2222/tcp # 允许特定IP段访问 firewall-cmd --reload如果使用iptables可以参考以下配置iptables -A INPUT -p tcp --dport 2222 -s 192.168.1.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 2222 -j DROP # 默认拒绝其他IP访问 service iptables save service iptables restart下表总结了 SSH 安全加固中的一些常见配置项及其推荐值供您参考配置项文件路径推荐值说明PasswordAuthentication/etc/ssh/sshd_configno禁用密码认证防止暴力破解Port/etc/ssh/sshd_config非 22 端口 (例如2222)修改默认端口增加扫描难度PermitRootLogin/etc/ssh/sshd_configno禁止 root 用户直接登录防火墙规则firewalld或iptables仅允许特定 IP 访问 SSH 端口限制对 SSH 端口的访问修改 SSH 默认端口并配置防火墙可以有效降低被恶意扫描和攻击的风险增强服务器的安全性。其他 Linux SSH 安全加固措施除了密钥认证和端口防护之外还有一些其他的措施可以进一步提高 SSH 服务的安全性。这些措施是对密钥认证和端口防护的补充共同构建更完善的安全体系。禁止 root 用户直接登录编辑/etc/ssh/sshd_config设置PermitRootLogin no。禁止 root 用户直接通过 SSH 登录可以降低 root 账号被攻破的风险。设置登录尝试次数限制使用MaxAuthTries限制每个连接的认证尝试次数。例如设置为 3 表示允许最多尝试 3 次密码或密钥认证。使用 fail2banfail2ban可以自动监控 SSH 日志并禁止恶意 IP 地址。Fail2ban 通过分析日志文件自动识别并屏蔽尝试暴力破解 SSH 服务的 IP 地址。定期更新 SSH 软件及时安装安全补丁修复已知漏洞。禁用 X11 forwarding除非需要通过 SSH 运行图形界面程序否则应该禁用 X11 forwardingX11Forwarding no以降低安全风险。常见问题能否使用 SSH 证书认证代替密钥认证可以。 SSH 证书认证比普通的密钥认证更安全但配置也更复杂适用于对安全性要求极高的场景。通过综合运用这些安全加固措施可以显著提高 Linux SSH 服务的安全性。禁用密码认证强制使用 SSH 密钥认证。修改 SSH 默认端口降低被扫描和攻击的风险。配置防火墙规则限制对 SSH 端口的访问。禁止 root 用户直接 SSH 登录降低 root 账户被攻破的风险。使用 Fail2ban 自动屏蔽恶意 IP。
Linux SSH安全:密钥认证与端口防护实战指南
发布时间:2026/5/27 22:07:46
Linux SSH安全密钥认证与端口防护实战指南在 Linux 服务器管理中SSHSecure Shell是用于安全远程登录和管理服务器的事实标准。默认配置的 SSH 服务存在安全隐患容易受到暴力破解等攻击。因此对 SSH 服务进行安全加固至关重要。本指南将介绍如何通过Linux SSH 密钥认证、修改默认端口及配置防火墙等手段提升Linux SSH 安全性有效防范潜在的安全风险。我们将以 CentOS/RHEL 7/8/9 或 Ubuntu 18.04/20.04/22.04 等常见发行版为例讲解具体操作步骤。Linux SSH安全禁用密码认证启用密钥认证使用密码进行 SSH 认证的安全性较低容易受到暴力破解攻击。为提高 Linux SSH 安全性强烈建议禁用密码认证启用密钥认证。密钥认证基于公钥密码学使用密钥对公钥和私钥进行身份验证。私钥保存在客户端公钥保存在服务器端。本节将详细介绍如何生成密钥对、上传公钥以及禁用密码认证从而避免暴力破解风险。生成 SSH 密钥对RSA首先需要在客户端例如您的本地电脑生成 SSH 密钥对。可以使用ssh-keygen命令。以下命令生成一个 4096 位的 RSA 密钥对ssh-keygen -t rsa -b 4096执行该命令后会在用户目录下生成.ssh目录其中id_rsa是私钥id_rsa.pub是公钥。请务必妥善保管私钥切勿泄露给他人。私钥丢失可能导致无法登录服务器。上传 SSH 公钥到服务器生成密钥对后需要将公钥上传到服务器以便服务器能够使用公钥验证客户端的身份。可以使用ssh-copy-id命令简化上传过程例如ssh-copy-id useryour_server_ip该命令会自动将公钥添加到服务器上的~/.ssh/authorized_keys文件中。如果ssh-copy-id命令不可用也可以手动将id_rsa.pub的内容追加到服务器上的~/.ssh/authorized_keys文件中。为了保证 Linux SSH 安全性务必确保.ssh目录的权限是700authorized_keys文件的权限是600。手动上传公钥的步骤如下使用scp或其他文件传输工具将id_rsa.pub文件上传到服务器的临时目录例如/tmp。在服务器上使用以下命令将公钥添加到~/.ssh/authorized_keys文件中cat /tmp/id_rsa.pub ~/.ssh/authorized_keys设置正确的权限chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys禁用 SSH 密码认证成功上传公钥后就可以禁用密码认证了。编辑服务器上的 SSH 配置文件/etc/ssh/sshd_config。找到以下选项并修改为PasswordAuthentication no ChallengeResponseAuthentication no # 如果有的话也禁用 UsePAM no # 建议禁用PAM认证除非你有特殊需求保存文件后重启 SSH 服务使配置生效systemctl restart sshd重要提示在禁用密码认证之前请务必确保您已经成功配置了密钥认证并且能够使用密钥登录服务器。否则您可能会因为无法通过密码认证登录而失去对服务器的访问权限。建议在一个新的终端窗口中测试密钥认证是否生效确认无误后再禁用密码认证。通过禁用密码认证并启用密钥认证可以有效防止暴力破解提高 SSH 安全性。Linux SSH安全修改默认端口配置防火墙SSH 默认使用 22 端口进行通信但攻击者通常会扫描服务器的 22 端口尝试进行攻击。修改默认端口可以增加攻击者扫描和攻击的难度提高 Linux SSH 安全性。同时配置防火墙可以限制对 SSH 端口的访问只允许特定的 IP 地址或 IP 段访问 SSH 服务。本节将介绍如何修改 SSH 端口并配置防火墙规则以降低被恶意扫描和攻击的风险。修改 SSH 默认端口编辑 SSH 配置文件/etc/ssh/sshd_config。找到以下选项并修改为Port 2222 # 修改为其他未被使用的端口例如2222建议选择一个大于 1024 且未被其他服务使用的端口。保存文件后重启 SSH 服务systemctl restart sshd注意修改端口后需要同时更新防火墙规则允许新的端口通过。客户端连接时也需要指定新的端口例如ssh -p 2222 useryour_server_ip。配置防火墙规则使用firewalld或iptables配置防火墙只允许特定的 IP 地址访问 SSH 端口。以firewalld为例以下命令允许来自192.168.1.0/24网段的 IP 地址访问 2222 端口firewall-cmd --permanent --add-port2222/tcp firewall-cmd --permanent --add-source192.168.1.0/24 --add-port2222/tcp # 允许特定IP段访问 firewall-cmd --reload如果使用iptables可以参考以下配置iptables -A INPUT -p tcp --dport 2222 -s 192.168.1.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 2222 -j DROP # 默认拒绝其他IP访问 service iptables save service iptables restart下表总结了 SSH 安全加固中的一些常见配置项及其推荐值供您参考配置项文件路径推荐值说明PasswordAuthentication/etc/ssh/sshd_configno禁用密码认证防止暴力破解Port/etc/ssh/sshd_config非 22 端口 (例如2222)修改默认端口增加扫描难度PermitRootLogin/etc/ssh/sshd_configno禁止 root 用户直接登录防火墙规则firewalld或iptables仅允许特定 IP 访问 SSH 端口限制对 SSH 端口的访问修改 SSH 默认端口并配置防火墙可以有效降低被恶意扫描和攻击的风险增强服务器的安全性。其他 Linux SSH 安全加固措施除了密钥认证和端口防护之外还有一些其他的措施可以进一步提高 SSH 服务的安全性。这些措施是对密钥认证和端口防护的补充共同构建更完善的安全体系。禁止 root 用户直接登录编辑/etc/ssh/sshd_config设置PermitRootLogin no。禁止 root 用户直接通过 SSH 登录可以降低 root 账号被攻破的风险。设置登录尝试次数限制使用MaxAuthTries限制每个连接的认证尝试次数。例如设置为 3 表示允许最多尝试 3 次密码或密钥认证。使用 fail2banfail2ban可以自动监控 SSH 日志并禁止恶意 IP 地址。Fail2ban 通过分析日志文件自动识别并屏蔽尝试暴力破解 SSH 服务的 IP 地址。定期更新 SSH 软件及时安装安全补丁修复已知漏洞。禁用 X11 forwarding除非需要通过 SSH 运行图形界面程序否则应该禁用 X11 forwardingX11Forwarding no以降低安全风险。常见问题能否使用 SSH 证书认证代替密钥认证可以。 SSH 证书认证比普通的密钥认证更安全但配置也更复杂适用于对安全性要求极高的场景。通过综合运用这些安全加固措施可以显著提高 Linux SSH 服务的安全性。禁用密码认证强制使用 SSH 密钥认证。修改 SSH 默认端口降低被扫描和攻击的风险。配置防火墙规则限制对 SSH 端口的访问。禁止 root 用户直接 SSH 登录降低 root 账户被攻破的风险。使用 Fail2ban 自动屏蔽恶意 IP。