Linxu 配置SSH服务

发布时间:2026/7/24 20:54:45

Linxu 配置SSH服务 文章目录Linxu 配置SSH服务 SSH密钥认证公钥与私钥的配对游戏 认证的完整流程 角色总结谁拿公钥谁拿私钥1. 安装 SSH 服务2. 配置文件详解2.1. 修改默认端口 (Port)2.2. 禁用 root 用户直接登录 (PermitRootLogin)2.3. 禁用密码认证强制使用密钥登录 (PasswordAuthentication)2.4. 允许公钥认证 (PubkeyAuthentication)步骤 1: 在客户端生成密钥对 (如果还没有)步骤 2: 将公钥上传到服务器步骤 3: 测试登录2.5. 限制可登录的用户 (AllowUsers)2.6. 其他重要配置3. 使用注意事项与最佳实践4. 故障排除Linxu 配置SSH服务SSH (Secure Shell) 是一种加密网络协议用于在不安全的网络上安全地运行网络服务。最常见的用途是远程登录到系统并进行命令行操作。Linux 上最广泛使用的 SSH 实现是OpenSSH。 SSH密钥认证公钥与私钥的配对游戏SSH密钥认证的核心是一对数学上相关联的“钥匙”公钥 (Public Key)可以公开的“锁”。你把它放在目标服务器上相当于给服务器装上了一把只能由特定私钥打开的锁。私钥 (Private Key)必须保密的“钥匙”。由客户端这里是JumpServer持有用于打开那把锁。 认证的完整流程整个认证过程就像是一个“对暗号”的过程部署公钥装锁管理员将JumpServer的公钥提前部署到目标服务器192.168.3.2的 ~/.ssh/authorized_keys 文件中。这相当于在目标服务器上装了一把锁。发起连接拿钥匙开门当用户通过JumpServer点击连接时 JumpServer会作为SSH客户端使用其保管的私钥向目标服务器发起认证请求。加密与解密对暗号目标服务器收到请求后会生成一个随机字符串挑战并用之前部署的公钥进行加密然后发送给JumpServer。JumpServer收到这个加密的字符串后用自己持有的私钥进行解密。最后JumpServer将解密后的字符串发回给目标服务器。认证成功暗号正确目标服务器将收到的字符串与之前生成的进行比对。如果一致就证明JumpServer持有正确的私钥认证成功连接建立。 角色总结谁拿公钥谁拿私钥通过这个过程我们可以清晰地看到两者的分工目标服务器 (192.168.3.2)扮演“门”的角色。它只存储公钥锁用于验证来访者的身份。JumpServer扮演“钥匙管理员”的角色。它保管着私钥钥匙用于开启目标服务器上的锁。1. 安装 SSH 服务OpenSSH 通常分为客户端 (ssh) 和服务器 (sshd) 两部分。Ubuntu / Debian:# 更新软件包列表sudoaptupdate# 安装 SSH 客户端 (通常默认已安装)sudoaptinstallopenssh-client# 安装 SSH 服务器sudoaptinstallopenssh-serverCentOS / RHEL / Fedora:# 安装 SSH 客户端和服务端 (在较新版本中minimal安装可能默认不包含)sudoyuminstallopenssh-server openssh-clients# CentOS/RHELsudodnfinstallopenssh-server openssh-clients# Fedora/RHEL 8# 启用并启动服务 (安装后通常已自动启动但可以确认下)sudosystemctlenablesshdsudosystemctl start sshd服务状态检查# 检查 SSH 服务状态sudosystemctl statusssh# 对于某些系统如CentOS服务名可能是 sshdsudosystemctl status sshd# 如果服务未运行启动它sudosystemctl startssh# 设置开机自启sudosystemctlenablessh# 重新加载配置sudosystemctl reloadssh# ubuntu22.04版本执行下面两条命令sudosystemctl daemon-reloadsudosystemctl restart ssh.socket# 重启服务sudosystemctl restartssh# 查看ssh监听端口号sudoss-tlnp|grepsshd2. 配置文件详解SSH 的主要配置文件位于/etc/ssh/sshd_config。在修改任何配置之前务必备份原文件sudocp/etc/ssh/sshd_config /etc/ssh/sshd_config.baksudovim/etc/ssh/sshd_config关键配置项说明2.1. 修改默认端口 (Port)#Port 22 # 默认端口是 22注释状态Port56789# 取消注释并修改为一个高端口号如 56789注意修改端口后防火墙必须放行新端口且连接时必须指定端口ssh -p 56789 userhostname。2.2. 禁用 root 用户直接登录 (PermitRootLogin)PermitRootLogin no# 强烈建议设置为 no禁用后先使用普通用户登录然后通过su或sudo切换为 root增加一层安全屏障。2.3. 禁用密码认证强制使用密钥登录 (PasswordAuthentication)PasswordAuthentication no# 设置为 no 以禁用密码登录这是最简单的方式但也是最不安全的容易遭受暴力破解。开启后使用方式ssh -p 56789 usernameserver_ip然后输入用户密码。警告在确认密钥登录无误之前切勿将此选项设为no否则可能把自己锁在服务器外。2.4. 允许公钥认证 (PubkeyAuthentication)PubkeyAuthenticationyes# 通常默认就是 yes**更安全**使用一对加密密钥公钥和私钥进行认证。公钥放在服务器上私钥留在本地客户端。步骤 1: 在客户端生成密钥对 (如果还没有)# 使用ed25519推荐更安全更短过程中会提示输入passphrase加强保护ssh-keygen-ted25519-f/root/.ssh/backup_id# 执行后会提示你输入密钥的保存路径默认为 ~/.ssh/backup_id.pub和密码passphrase。# 或者使用rsassh-keygen-trsa-b4096-Cyour_emailexample.com# 传统方式# 执行后会提示你输入密钥的保存路径默认为 ~/.ssh/id_rsa.pub。Passphrase为私钥再添加一层密码保护即使私钥文件被盗也无法直接使用。步骤 2: 将公钥上传到服务器如果服务器上没有 authorized_keys 文件执行ssh localhost正常生成.ssh文件夹和authorized_keys如果还没有则使用方式二手动创建复制# 方式一ssh-copy-id-i~/.ssh/id_ed25519.pub-pport_number usernameserver_ip# 方式二(手动)mkdir-p~/.sshchmod700~/.sshecho粘贴您的公钥内容 here~/.ssh/authorized_keyschmod600~/.ssh/authorized_keys这会将你的公钥内容追加到服务器上的~/.ssh/authorized_keys文件中。步骤 3: 测试登录ssh-pport_number usernameserver_ip2.5. 限制可登录的用户 (AllowUsers)AllowUsers user1 user2192.168.1.100此例只允许用户user1从任何地址登录以及用户user2只能从 IP192.168.1.100登录。2.6. 其他重要配置Protocol2# 只使用更安全的 SSHv2 协议PermitEmptyPasswords no# 禁止空密码登录MaxAuthTries3# 最大认证尝试次数ClientAliveInterval300# 客户端无响应300秒后断开连接ClientAliveCountMax2# 客户端存活检测次数3. 使用注意事项与最佳实践备份配置修改sshd_config前务必备份。测试配置使用sshd -t测试配置文件语法是否正确然后再重载服务。sudosshd-t保持连接修改关键设置如端口、禁用密码时始终保持至少一个活动的 SSH 连接会话。这样如果新配置导致无法登录你还可以通过旧的会话来恢复配置。防火墙规则任何对 SSH 端口的修改包括默认的 22都必须相应地在防火墙ufwfirewalldiptables中更新规则放行新的端口。Fail2Ban安装 Fail2Ban 工具来自动封锁多次尝试 SSH 密码失败的 IP 地址有效防止暴力破解。使用参考文章Fail2Ban 工具的使用更新软件定期更新系统及 OpenSSH 软件包以获取安全补丁。参考文章升级openssh至最新版禁用不用的算法对于更高安全要求的环境可以考虑在sshd_config中禁用较弱的加密算法、MAC 算法和密钥交换算法。强制选择连接方式在测试阶段可以使用命令ssh -o PreferredAuthenticationspassword -o PubkeyAuthenticationno userhostname强制使用密码连接不使用密钥4. 故障排除连接被拒绝 (Connection refused)服务未运行或防火墙拦截。权限太开放 (Permissions are too open)~/.ssh目录权限应为700~/.ssh/authorized_keys文件权限应为600。chmod700~/.sshchmod600~/.ssh/authorized_keys调试模式使用-vverbose参数查看详细的连接过程对排查问题极有帮助。ssh-v-pport_number userhostname查看日志服务器端的 SSH 日志通常位于/var/log/auth.log(Debian/Ubuntu) 或/var/log/secure(CentOS/RHEL)。

相关新闻