在目标服务器上,首先确认系统为受支持发行版并具备网络连通性;确保以root或具备sudo权限的用户运行。常见前置条件包括安装好SSH服务、已开放管理端口、防火墙策略已规划、时间同步(ntp/chrony)。
下载脚本(curl/wget),检查脚本来源与签名,运行前赋予执行权限(chmod +x)。运行脚本时传入必要参数(管理端口、日志目录、是否启用审计等),脚本通常会自动配置sshd、用户组、日志和防火墙规则。
部署前在测试环境先演练一遍;保留脚本输出日志,便于回溯错误;使用非标准SSH端口并配合防火墙策略,可减少被动暴露风险。
遇到此类错误,先检查脚本文件权限:使用chmod +x script.sh赋予可执行权限,并用sudo或root执行。如果提示“/bin/sh: bad interpreter”,说明脚本行尾可能为Windows格式,需用dos2unix处理。
确认脚本操作的目标目录具备写权限(例如/opt、/var/log),以及临时目录可用。若脚本创建用户或更改SSH配置,需以具有相应权限的用户运行。
检查系统的执行策略(如SELinux是否拒绝执行),查看/var/log/messages或audit日志获取更详细原因,必要时临时调整SELinux为permissive进行排查。
优先确认SSH服务已启动(systemctl status sshd),并监听预期端口(ss -tnlp | grep sshd)。其次确认防火墙(iptables/nftables/ufw)已放行对应端口,云厂商安全组规则也需放通。
检查/etc/ssh/sshd_config中的ListenAddress和Port配置是否正确;若修改配置后忘记重启sshd,连接会失败。查看/var/log/secure或/var/log/auth.log获取拒绝原因。
在私有网络中部署时,确认跳板机的公网访问策略和NAT规则正确;若使用跳板机做代理,还需检查IP转发和iptables的NAT表规则。
确认用户家目录及.ssh目录权限(家目录不应为777,.ssh应该700,authorized_keys为600);确保authorized_keys内容无多余换行或格式错误,并且sshd_config启用了PubkeyAuthentication。
若使用密码登录,检查sshd_config中的PasswordAuthentication是否为yes;若启用了MFA(如Google Authenticator),确认PAM配置正确,用户MFA令牌已绑定。
使用SSH的调试模式(ssh -vvv user@host)查看握手与认证过程;服务端查看认证日志,定位是密钥拒绝、密码错误还是PAM模块问题。
开启系统审计(auditd)与集中日志采集(rsyslog/ELK/Graylog),对所有管理操作留痕,并配置日志轮转避免磁盘耗尽。对SSH会话可开启session记录或使用强审计代理。
部署fail2ban或类似机制限制暴力破解,使用最小权限原则创建管理账号,限制sudo命令范围;考虑使用堡垒机产品自带的会话管理与审计功能。
定期更新系统与关键组件,保持安全补丁及时应用;定期备份配置文件与关键数据,测试恢复流程,保持恢复时限与可用性。
