mac禁止root远程ssh登录需添加permitrootlogin no至sshd_config,备份配置后用nano编辑并保存,创建具备sudo权限的普通管理员账户,重启com.openssh.sshd服务,最后验证admin可登录而root被拒。

Mac终端禁止Root用户通过SSH远程登录,是为了防止暴力破解和误操作导致系统完全失控,必须在保留普通管理员访问能力的前提下完成配置,否则将无法再远程管理机器。
确认当前SSH服务状态并备份配置
打开终端,执行:sudo systemsetup -getremotelogin,确认Remote Login(即SSH)当前是开启状态。若返回“Remote Login: Off”,需先启用:sudo systemsetup -setremotelogin on。
执行命令备份原始配置:sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak。这一步不可跳过,【Mac的sshd_config默认无PermitRootLogin行,直接添加而非修改】。
修改sshd_config禁用root远程登录
使用nano编辑器打开配置文件:sudo nano /etc/ssh/sshd_config。
按Ctrl+_(下划线)调出定位功能,输入PermitRootLogin后回车;若未找到,将光标移至文件末尾,另起一行手动添加:PermitRootLogin no。
检查是否有多余的PermitRootLogin配置——Mac系统默认不写该参数,所以只应有你刚添加的这一行,且不能以#开头。
按Ctrl+O保存,Ctrl+X退出。
创建并验证具备sudo权限的普通管理员账户
方法一:通过系统设置图形界面创建
进入「系统设置」→「用户与群组」→ 点击左下角锁图标解锁 → 点击「+」号 → 选择「管理员」,填写全名、账户名称(如admin)、密码,完成创建。
方法二:终端命令创建(适合批量或脚本化)
执行:sudo sysadminctl -addUser admin -fullName "Admin User" -password "StrongPass123!" -admin。注意:密码必须满足macOS强密码策略(含大小写字母、数字、特殊字符),否则命令失败。
验证该用户能否提权:su - admin -c "sudo whoami",输入admin密码后应输出root。若提示“user is not in the sudoers file”,说明创建失败,需重走图形界面流程。
重启SSH服务并强制生效
Mac不使用systemd,重启方式不同:执行sudo launchctl stop com.openssh.sshd → 等待3秒 → 执行sudo launchctl start com.openssh.sshd。
⚠️ 关键验证顺序:新开一个终端窗口,先用admin账户成功SSH登录:ssh admin@your-mac-ip;确认能登录后,再测试root被拒:ssh root@your-mac-ip,应立即返回Permission denied (publickey,password)或直接断连。
若root仍可登录,说明配置未生效——大概率是sshd_config中存在多行PermitRootLogin,或某一行被注释但值为yes,需重新检查并删净冗余行。
(可选)关闭密码登录,仅保留密钥认证
编辑/etc/ssh/sshd_config,确保以下两行存在且未注释:
PasswordAuthentication no
PubkeyAuthentication yes
然后为admin用户部署公钥:ssh-copy-id -i ~/.ssh/id_rsa.pub admin@your-mac-ip。这一步必须在重启sshd前完成,否则将彻底失联。
重启服务后,普通用户只能用密钥登录,root则完全无法建立SSH连接。











