CentOS SSH多用户管理技巧
小樊
49
2025-11-15 18:31:43
CentOS SSH多用户管理技巧
一 基础安全与多用户接入
- 创建系统用户与家目录:使用命令useradd -m username创建用户,使用passwd username设置密码。
- 启用密钥登录:客户端执行ssh-keygen -t rsa -b 4096,将公钥通过ssh-copy-id username@server_ip或手动追加到服务器用户的**~/.ssh/authorized_keys**。
- 核心配置(/etc/ssh/sshd_config):建议设置PubkeyAuthentication yes、按需设置PasswordAuthentication yes/no、PermitRootLogin no、通过AllowUsers user1 user2白名单限制可登录用户、用MaxSessions 10控制每用户会话数。
- 使配置生效:执行systemctl restart sshd。
- 防火墙放行:使用firewall-cmd --permanent --add-service=ssh && firewall-cmd --reload;如使用iptables,添加规则iptables -A INPUT -p tcp --dport 22 -j ACCEPT。
- 连接测试:从客户端执行ssh username@server_ip验证登录与密钥是否生效。
二 SFTP多用户隔离与权限控制
- 创建SFTP专用组与用户:执行groupadd sftpusers,创建用户并加入该组(如useradd -m -G sftpusers sftpuser),设置密码。
- 配置Chroot与强制SFTP:在**/etc/ssh/sshd_config中使用Match Group sftpusers块,设置ChrootDirectory %h**、ForceCommand internal-sftp、AllowTcpForwarding no、X11Forwarding no。
- 目录与权限要点:Chroot根目录(如**/home/sftpuser**)需由root:root拥有且权限755;为用户创建可写目录(如**/home/sftpuser/uploads**),并设为sftpuser:sftpusers 755。
- 重启服务与测试:执行systemctl restart sshd,使用sftp sftpuser@your_server_ip验证仅SFTP可用且目录受限。
- 说明:部分系统路径可能为**/usr/libexec/openssh/sftp-server**,但更推荐使用internal-sftp。
三 登录控制与审计策略
- 登录白名单:通过AllowUsers精确控制可登录账户,减少攻击面。
- 禁用高风险登录:设置PermitRootLogin no,必要时仅允许密钥登录。
- 会话与资源控制:使用MaxSessions限制每用户会话数,避免资源滥用。
- 精细访问控制:结合PAM与**/etc/pam.d/sshd**,利用如pam_listfile.so的item=user sense=allow file=/etc/ssh/allowed_users实现外部用户清单控制,文件权限建议600。
- 持续加固:保持系统与SSH组件及时更新,并启用SELinux等安全模块增强整体防护。
四 快速排错清单
- 权限与属主:确认**~/.ssh为700**、authorized_keys为600;Chroot根目录必须为root:root 755,可写目录单独赋权给相应用户。
- SELinux上下文:若启用SELinux,SFTP目录可能需要恢复为default_t或相应类型,可用restorecon -R /home/sftpuser修复。
- 端口与防火墙:确认sshd监听端口与firewalld/iptables放行规则一致;如使用非默认端口,同步更新配置与防火墙。
- 配置语法:修改**/etc/ssh/sshd_config后先执行sshd -t检查语法,再systemctl restart sshd**,避免锁死。
- 日志定位:查看**/var/log/secure与journalctl -u sshd**,快速定位认证失败、权限拒绝与Chroot相关错误。