OpenSSH 从入门到精通:协议、配置与密钥认证实战

发布时间:2026/7/12 2:41:32

OpenSSH 从入门到精通:协议、配置与密钥认证实战 摘要本文系统梳理了 SSH 协议、OpenSSH 软件、服务配置、故障排查以及密钥认证等核心知识点。内容涵盖 SSH 协议基础、OpenSSH 组件构成、服务端配置优化、常见连接问题排查步骤并详细演示了 Linux 与 Linux、Windows 与 Linux 之间基于密钥的免密登录配置过程。1. SSH 协议与 OpenSSH 简介协议 (Protocol)在数据交换过程中建立的标准和规则。在计算机领域协议通常以软件形式实现定义了数据的组成格式和交互方式。SSH (Secure Shell)一种安全的网络协议用于在不安全的网络上提供安全的远程登录和其他安全网络服务。OpenSSH是 SSH 协议的一个开源实现它是一个远程控制软件用于安全地远程操作 Linux 系统。其核心特性包括加密传输远程传输的数据经过加密安全性高难以破解。身份认证支持密码和密钥等多种认证方式。常用加密算法RSA、ECDSA、Ed25519。2. OpenSSH 组件与安装2.1 核心软件包在 Rocky Linux/CentOS 系统中OpenSSH 通常包含以下主要软件包openssh完整元包包含客户端、服务端、密钥生成工具及共享库。openssh-clients客户端包包含ssh,scp,sftp等连接工具用于主动连接其他 SSH 服务器。openssh-server服务器端包包含sshd守护进程用于开启 SSH 服务允许他人连接。查询已安装的 OpenSSH 相关包rpm -qa | grep openssh2.2 从镜像安装软件系统镜像如光盘是软件的重要来源。挂载光盘并查找软件包# 挂载光盘到 /mnt 目录 mount /dev/cdrom /mnt 进入 Packages 目录查找 openssh 相关包 cd /mnt/AppStream/Packages/ ls openssh* 使用 rpm 命令安装注意依赖 rpm -ivh openssh-*.rpm3. SSH 服务配置与加固3.1 配置文件解析sshd_configSSH 服务端 (sshd) 的主配置文件控制他人连接本机时的行为。ssh_configSSH 客户端的配置文件控制本机主动连接他人时的行为。配置目录/etc/ssh/sshd_config.d/存放服务端子配置文件优先级高于主配置文件。配置加载顺序sshd进程先读取主配置文件sshd_config再读取子配置文件*.conf子配置会覆盖主配置中的相同项。3.2 常见安全加固方法编辑/etc/ssh/sshd_config或子配置文件进行加固修改默认端口将端口从 22 改为 1024-65535 之间的任意端口。Port 2255禁止 root 用户直接登录PermitRootLogin no禁用密码认证仅使用密钥登录更高安全级别PasswordAuthentication no PubkeyAuthentication yes注意在启用 SELinux 时修改默认端口可能导致连接失败需临时或永久禁用 SELinux。3.3 服务管理修改配置后必须重启服务使配置生效systemctl restart sshd # 或 service sshd restart验证服务状态与端口监听# 查看 sshd 进程 ps aux | grep sshd 查看端口监听情况 ss -anplut | grep sshd 或 netstat -anlutp | grep sshd 查看特定端口被哪个进程占用 lsof -i:22554. SSH 连接问题排查流程当 SSH 连接失败时可按以下步骤排查测试网络连通性使用ping命令检查目标 IP 是否可达。检查 SSH 服务状态确认sshd进程是否运行端口是否监听。确认端口号检查客户端是否使用了正确的端口非默认 22 端口时需指定-p。检查用户限制确认配置文件是否限制了特定用户登录。查看日志检查/var/log/secure或/var/log/auth.log获取详细错误信息。检查防火墙与 SELinux临时关闭防火墙systemctl stop firewalld禁用防火墙开机自启systemctl disable firewalld查看 SELinux 状态getenforce临时关闭 SELinuxsetenforce 0永久禁用 SELinux编辑/etc/selinux/config设置SELINUXdisabled并重启。检查 SSH 配置确认是否配置了禁止密码登录等限制。5. SSH 密钥认证实战5.1 Linux 与 Linux 之间密钥认证目标实现从 Client 机如 Ubuntu到 Server 机如 Rocky Linux的免密登录。步骤在 Client 端生成密钥对ssh-keygen -t ed25519 # 默认保存在 ~/.ssh/id_ed25519私钥和 ~/.ssh/id_ed25519.pub公钥将公钥传输到 Server 端ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2255 usernameserver_ip # 例如ssh-copy-id -p 2255 fanzb192.168.10.228该命令会将公钥自动追加到 Server 端用户家目录的~/.ssh/authorized_keys文件中。验证免密登录ssh -p 2255 usernameserver_ip # 例如ssh -p 2255 fanzb192.168.10.2285.2 Windows (Xshell) 与 Linux 之间密钥认证目标使用 Xshell 通过密钥登录 Linux 服务器。步骤在 Xshell 中生成密钥对打开 Xshell点击菜单栏「工具」-「新建用户密钥生成向导」。选择密钥类型如 RSA和密钥长度生成密钥对。将生成的公钥内容保存下来。在 Linux Server 上配置公钥登录 Server进入相应用户的家目录例如普通用户fanzb。创建或编辑~/.ssh/authorized_keys文件。将 Xshell 生成的公钥内容粘贴到该文件中每行一个公钥。设置正确的文件权限chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys在 Xshell 中配置连接新建会话填写主机 IP 和端口。在「用户身份验证」方法中选择「Public Key」并浏览选择刚才生成的私钥文件。连接即可实现免密登录。6. 常用客户端工具ssh远程登录。ssh -p 2255 userhost_ipscp安全拷贝文件。# 上传文件到远程 scp -P 2255 local_file userhost_ip:remote_path 从远程下载文件 scp -P 2255 userhost_ip:remote_file local_path注意scp使用大写的-P指定端口而ssh使用小写的-p。sftp交互式安全文件传输。7. 总结安全第一修改默认端口、禁用 root 登录、使用密钥认证是加固 SSH 服务的三大有效措施。配置管理理解主配置文件与子配置文件的优先级修改后务必重启服务。故障排查按照“网络 → 服务 → 端口 → 配置 → 防火墙/SELinux → 日志”的顺序进行排查。密钥管理私钥务必妥善保管公钥分发到目标服务器的~/.ssh/authorized_keys文件中。环境准备实验或生产环境部署前建议先关闭防火墙和 SELinux 以避免干扰待调试完成后再按需开启。

相关新闻