Linux SSH 服务一键配置脚本使用指南 🚀
Linux SSH 服务一键配置脚本使用指南 🚀
本文详细介绍一个高效管理 SSH 服务的 Bash 脚本:
setup-ssh.sh
(SSH 服务端配置脚本)。
✅ 支持主流 Linux 发行版:Debian, Ubuntu, CentOS, RHEL, Fedora, OpenSUSE, Arch Linux。
📖 导航目录
📌 脚本概述
SSH(Secure Shell)是用于安全远程登录和执行命令的网络协议,是管理 Linux 服务器的标准工具。下面介绍的脚本极大简化了 SSH 服务的配置和管理流程。✨
🔧 功能特点
此脚本用于自动化安装和配置 SSH 服务器,优化连接参数并设置防火墙规则,特别适合快速部署和批量配置场景。🎯
- ✅ 自动检测系统包管理器(APT/YUM/DNF/ZYPPER/PACMAN)并安装 SSH 服务
- ✅ 支持主流 Linux 发行版:Debian, Ubuntu, CentOS, RHEL, Fedora, OpenSUSE, Arch Linux
- ✅ 优化 SSH 连接参数(禁用 DNS 查询,启用压缩,保持连接等)
- ✅ 自动配置防火墙允许 SSH 连接(支持 ufw, firewalld, iptables)
- ✅ 备份原始配置文件,确保操作安全可逆
- ✅ 提供清晰的连接信息和安全建议
- ✅ 完整的错误处理和日志记录功能
一、 🚀脚本使用方法
1. 安装基础软件
1 | apt update -y && apt install -y rsync sudo curl wget vim tree samba nfs-common openssh-server zip htop net-tools |
2. 一键配置脚本
1 | # Vercel 仓库 |
3. 查看修改
1 | grep -E 'Port 22|PermitRootLogin|GSSAPIAuthentication|UseDNS|Compression|ClientAliveInterval|ClientAliveCountMax|TCPKeepAlive' /etc/ssh/sshd_config |
命令片段 | 一句话解释 |
---|---|
# the setting of “PermitRootLogin prohibit-password | 删除那行纯注释提示。 |
Port 22 | 强制监听 22 端口。 |
PermitRootLogin yes | 允许 root 直接密码/密钥登录。 |
GSSAPIAuthentication no | 关闭 GSSAPI,加快连接速度。 |
UseDNS no | 禁用反向 DNS,防止登录卡慢。 |
Compression yes | 开启 SSH 层压缩,节省带宽。 |
ClientAliveInterval 30 | 每 30 秒服务端发一次心跳。 |
ClientAliveCountMax 86400 | 连续 86400 次无响应才断开≈30 天。 |
TCPKeepAlive no | 仅用 SSH 层心跳,避免伪造 RST 导致误断。 |
4. 公钥认证开关和公钥文件路径(选做)
1 | sed -i 's/^#*PubkeyAuthentication.*/PubkeyAuthentication yes/' /etc/ssh/sshd_config |
二、🛠️ 补充 SSH 相关命令
除了使用脚本外,掌握以下 SSH 命令将帮助您更灵活地管理远程连接。📚
📊 服务器端管理命令
1 | # 查看 SSH 服务状态 |
💻 客户端连接命令
1 | # 基本连接 |
🔍 故障排查命令
1 | # 检查 SSH 端口是否开放 |
三、🎯 SSH 使用示例
🔑 1. SSH 密钥认证配置
1 | # 生成 SSH 密钥对(客户端) |
🔄 2. SSH 端口转发和隧道
1 | # 本地端口转发(访问远程服务的本地端口) |
四、❓ 常见问题解决
连接被拒绝或超时 🤔
- 检查 SSH 服务是否运行:
sudo systemctl status ssh
- 确认防火墙允许 SSH 端口:
sudo ufw status
或sudo firewall-cmd --list-all
- 验证网络连通性:
ping hostname
和telnet hostname 22
- 检查 SSH 服务是否运行:
权限错误 🔐
- 检查
~/.ssh
目录权限:应为 700 - 检查
~/.ssh/authorized_keys
文件权限:应为 600 - 确认 SELinux 或 AppArmor 没有阻止访问
- 检查
主机密钥验证失败 ⚠️
- 清除过期的密钥:
ssh-keygen -R hostname
- 或者编辑
~/.ssh/known_hosts
手动删除对应行
- 清除过期的密钥:
认证失败 🔑
- 确认服务器是否允许密码认证:
PasswordAuthentication yes
- 检查密钥是否正确复制到
authorized_keys
- 验证服务器是否允许该用户登录:
AllowUsers
设置
- 确认服务器是否允许密码认证:
连接速度慢 🐢
- 禁用 DNS 反向查询:在
sshd_config
设置UseDNS no
- 尝试使用更快的加密算法:
Ciphers aes128-gcm@openssh.com
- 启用压缩:
Compression yes
- 禁用 DNS 反向查询:在
五、🔒 SSH 安全建议
使用非标准端口 🚪
- 修改默认 SSH 端口(22)为其他端口
- 在
/etc/ssh/sshd_config
中设置:Port 2222
禁用 root 直接登录 👤
- 禁止 root 用户直接 SSH 登录:
PermitRootLogin no
- 使用普通用户登录后切换 root
使用密钥认证 🔑
- 完全禁用密码认证:
PasswordAuthentication no
- 强制使用公钥认证:
PubkeyAuthentication yes
- 完全禁用密码认证:
限制用户访问 📋
- 只允许特定用户访问:
AllowUsers user1 user2
- 或限制用户组:
AllowGroups ssh-users
使用 fail2ban 防止暴力破解 🛡️
1
2
3
4
5
6
7
8
9# 安装 fail2ban
sudo apt install fail2ban
# 配置 SSH 保护
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# 在 [sshd] 部分设置:
# enabled = true
# port = ssh
# logpath = /var/log/auth.log定期更新 SSH 🔄
- 保持 SSH 软件最新:
sudo apt update && sudo apt upgrade openssh-server
- 关注 SSH 安全公告,及时应对漏洞
- 保持 SSH 软件最新:
使用双因素认证 ✅
- 结合 Google Authenticator 等工具增强安全性
- 配置 SSH 与 PAM 集成实现双因素认证
六、📝 总结
通过本文介绍的脚本和一系列 SSH 管理命令,您可以轻松实现以下目标:🎯
- 快速部署:使用
setup-ssh.sh
在几分钟内完成 SSH 服务器配置和优化 - 安全连接:掌握密钥认证、端口转发等高级 SSH 功能
- 灵活管理:使用各种 SSH 命令应对不同管理场景和需求
- 故障排除:使用专业工具诊断和解决连接、认证等问题
- 安全保障:实施最佳实践,确保远程访问服务的安全性
无论是单台服务器的日常管理,还是大规模集群的远程维护,SSH 都是不可或缺的核心工具。这个脚本和相关命令将帮助您更高效地使用这一工具,提升工作效率和系统安全性。💼
建议收藏本文作为 SSH 管理的参考手册,随时查阅相关命令和技巧。如有任何问题或建议,欢迎留言讨论!💬
评论