在 Linux 系统中允许 SSH 远程连接,核心在于安装 OpenSSH 服务端软件、正确启动并管理守护进程、配置防火墙以放行网络流量,以及通过修改配置文件进行必要的安全加固,这一过程不仅涉及基础的服务启用,更涵盖了端口管理、访问控制及加密认证等关键运维环节,确保管理员既能高效管理服务器,又能有效抵御外部网络攻击。

安装与基础服务启动
实现 Linux 允许 SSH 的第一步是确保系统已安装 OpenSSH Server,大多数现代 Linux 发行版(如 Ubuntu、CentOS、Debian)默认可能仅安装了客户端,因此需要手动安装服务端组件,对于基于 Debian 或 Ubuntu 的系统,通常使用 APT 包管理器进行安装;而对于基于 Red Hat 或 CentOS 的系统,则倾向于使用 YUM 或 DNF。
安装完成后,必须启动 sshd 守护进程并将其设置为开机自启,这是保证服务器重启后依然能够被远程连接的关键,使用 systemctl 命令是当前主流 Linux 发行版管理服务的标准方式,通过执行启动命令,系统会在后台加载 SSH 服务,默认监听 TCP 协议的 22 端口,管理员可以通过 systemctl status sshd 或 systemctl status ssh 来验证服务是否处于活跃(active)状态,并确认是否有错误日志输出。
防火墙与网络端口配置
即便 SSH 服务已成功启动,Linux 系统的防火墙未放行相应端口,远程连接依然会被阻断,网络层面的配置是允许 SSH 的第二道关卡,Linux 常用的防火墙管理工具包括 UFW(Uncomplicated Firewall)和 Firewalld。
在使用 UFW 的 Ubuntu 系统中,管理员只需执行允许 OpenSSH 的规则,UFW 会自动读取配置文件并放行 22 端口,而在使用 Firewalld 的 CentOS 或 RHEL 系统中,操作逻辑略有不同,需要将 SSH 服务添加到防火墙的信任区域,并执行重载操作使配置立即生效,对于生产环境,建议检查 SELinux(安全增强型 Linux)的状态,因为过于严格的 SELinux 策略可能会阻止 SSH 服务绑定非标准端口或使用特定认证方式,若需修改默认端口(例如改为 2222),不仅要在 sshd_config 中修改,还必须在防火墙中开放该新端口的流量。
核心配置文件与安全加固
真正体现专业运维能力的环节在于对 /etc/ssh/sshd_config 文件的调优,默认配置虽然能保证连通性,但在安全性上往往存在隐患,为了建立既允许连接又安全可靠的 SSH 环境,必须对关键参数进行精细化调整。

禁用 Root 用户直接登录,默认情况下,SSH 允许 root 用户登录,这使得黑客可以暴力破解 root 密码进而完全控制服务器,通过设置 PermitRootLogin no,强制攻击者必须先破解普通用户账号,再通过提权获取 root 权限,大大增加了攻击难度。
密码认证与密钥认证的取舍,密码认证虽然方便,但在面对字典攻击或撞库攻击时极其脆弱。最佳实践是设置 PasswordAuthentication no,强制使用基于公钥/私钥对的 SSH 密钥认证,管理员需要在客户端生成密钥对,并将公钥上传至服务器的 ~/.ssh/authorized_keys 文件中,这种方式不仅免去了输入密码的繁琐,其加密强度也远超常规密码。
限制登录用户列表也是一项有效的安全措施,通过 AllowUsers 或 AllowGroups 指令,明确指定只有特定的系统用户或用户组才能通过 SSH 登录,其他所有用户即使拥有系统账号也会被拒绝连接,这遵循了最小权限原则,有效防止了因个别普通账号失守而导致的全面沦陷。
连接保持与故障排查
在实际运维体验中,长时间的 SSH 连接可能会因为网络波动或超时而断开,为了优化操作体验,可以在服务端配置 ClientAliveInterval 和 ClientAliveCountMax 参数,前者指定服务器向客户端发送请求消息的间隔时间,后者定义了在没有收到响应的情况下最大发送次数,合理设置这两个参数,可以确保在空闲连接不断开的同时,及时清理已死掉的会话。
当遇到无法连接的情况时,专业的排查思路应遵循“由底向上”的原则,首先检查网络连通性,使用 ping 命令确认服务器是否在线;接着使用 telnet 或 nc 工具检测 22 端口是否被防火墙拦截;然后检查服务器端 SSH 服务状态及监听端口;最后查看 /var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(RHEL/CentOS)日志文件,分析具体的拒绝原因,如权限错误、认证失败或 IP 被封禁等。

相关问答
Q1:如何修改 Linux SSH 的默认监听端口以提高安全性?
A: 修改默认端口可以减少被自动化脚本扫描的概率,使用文本编辑器打开 /etc/ssh/sshd_config 文件,找到 #Port 22 这一行,去掉注释符号 并将 22 修改为所需的高位端口号(2222),保存并退出后,重启 SSH 服务使配置生效。切记,在修改端口后,必须同时配置防火墙(如 firewall-cmd 或 ufw)放行该新端口,否则会导致连接中断,如果是 SELinux 开启的状态,还需要使用 semanage port -a -t ssh_port_t -p tcp 2222 命令将新端口添加到 SELinux 的上下文中。
Q2:SSH 连接时出现 “Permission denied (publickey)” 错误怎么办?
A: 该错误通常表示服务器拒绝了公钥认证,确认客户端私钥文件权限是否正确(通常应为 600),且私钥与服务器上 ~/.ssh/authorized_keys 文件内的公钥匹配,检查服务器端 sshd_config 文件中的 PubkeyAuthentication 是否设置为 yes,验证服务器上 .ssh 目录权限必须为 700,authorized_keys 文件权限必须为 600,且文件所有者必须是登录用户,而非 root 或其他用户,因为 SSH 服务对权限极其敏感,权限过宽会导致认证失败。
如果您在配置 Linux SSH 服务的过程中遇到任何特定的问题,或者有关于服务器安全加固的独到见解,欢迎在评论区留言交流,我们将共同探讨更优的解决方案。

















