日常使用 Mac 做本地服务器、代码编译、远程运维时,很多场景需要给他人提供 SSH 远程连接权限,但绝对不能开放桌面登录、管理员权限、本地操作权限。
macOS 默认新建普通用户可以登录系统桌面,存在权限泄露、文件误删、隐私泄露风险。今天分享一套 macOS 专属仅 SSH 用户创建方案,用户只能通过 SSH 连接设备,无法登录图形桌面、无管理员权限、权限最小化,兼顾实用性与安全性,适配 Ventura、Sonoma、Sequoia 等新版系统。
一、方案核心优势
区别于普通用户、共享用户,本次配置的仅 SSH 用户具备以下特点:
- 仅支持 SSH 远程登录,无法在 Mac 本地登录桌面系统
- 无 sudo 管理员权限,无法修改系统配置、安装软件、访问核心目录
- 权限严格隔离,仅拥有自身家目录读写权限
- 不影响原有系统用户,独立权限、随时可删除
- 适配官方 SSH 服务,无需第三方工具,原生稳定安全
二、前置准备:开启 macOS 原生 SSH
首先确保 Mac 开启远程登录(SSH 服务),两种方式任选其一:
方式1:图形化开启(新手推荐)
打开 系统设置 > 通用 > 共享,勾选 远程登录,默认端口 22,保持默认即可。同时可在此处初步设置 SSH 访问权限,后续通过命令精准管控。
方式2:终端命令开启
# 开启远程登录(SSH)
sudo systemsetup -setremotelogin on
# 查看 SSH 状态
sudo systemsetup -getremotelogin
三、创建专属 SSH 受限用户(核心步骤)
macOS 不建议直接用图形界面创建用户(权限无法精细化控制),我们使用官方 dscl命令创建纯终端受限用户,全程终端操作。
下文统一示例用户名:sshuser,可自行替换为自定义名称。
1. 创建用户组与专属用户
# 1. 创建专用用户组(GID 自定义,这里用 2000)
sudo dscl . -create /Groups/sshgroup
sudo dscl . -create /Groups/sshgroup PrimaryGroupID 2000
# 2. 创建 SSH 专用用户(UID 自定义 2000,不与系统用户冲突)
sudo dscl . -create /Users/sshuser
sudo dscl . -create /Users/sshuser UserShell /bin/bash
sudo dscl . -create /Users/sshuser RealName "SSH Only User"
sudo dscl . -create /Users/sshuser UniqueID 2000
sudo dscl . -create /Users/sshuser PrimaryGroupID 2000
# 3. 创建用户家目录
sudo dscl . -create /Users/sshuser NFSHomeDirectory /Users/sshuser
# 4. 设置用户登录密码(执行后按提示输入两次密码)
sudo passwd sshuser
2. 禁止桌面登录,仅保留 SSH 权限
这是最关键的一步!关闭用户图形桌面登录权限,仅允许远程 SSH 连接:
# 禁止用户本地桌面登录
sudo dscl . -create /Users/sshuser Shell /usr/bin/false
sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add sshuser
执行后,该用户不会出现在 Mac 开机登录界面,彻底杜绝本地桌面登录可能。
3. 限制 SSH 仅该用户可登录(安全加固)
默认 Mac 所有管理员用户均可 SSH 登录,为了安全,我们配置 SSH 白名单,仅新建的 sshuser 可远程连接:
# 创建 SSH 访问权限组
sudo dseditgroup -o create -q com.apple.access_ssh
# 将 SSH 专用用户加入允许列表
sudo dseditgroup -o edit -a sshuser -t user com.apple.access_ssh
执行完成后,在 系统设置 > 共享 > 远程登录 中,会自动切换为「仅限这些用户」,仅 sshuser 拥有 SSH 权限。
四、进阶安全配置(必做)
1. 关闭 root 远程登录
禁止 root 用户 SSH 连接,杜绝暴力破解高危风险:
# 编辑 SSH 配置文件
sudo nano /etc/ssh/sshd_config
# 找到以下配置,修改为 no
PermitRootLogin no
# 重启 SSH 服务生效
sudo launchctl kickstart -k system/com.openssh.sshd
2. 禁止用户 sudo 权限
我们创建的自定义用户默认无 sudo 权限,可直接验证,无需额外配置:
# 切换用户测试
su - sshuser
sudo ls /root
提示 sshuser is not in the sudoers file 即为配置成功。
五、验证配置是否生效
1. 远程 SSH 登录测试(正常通行)
在另一台设备终端执行,正常登录即权限生效:
ssh sshuser@你的MacIP地址
2. 本地桌面登录测试(拦截生效)
返回 Mac 登录界面,找不到 sshuser 用户,无法本地登录,符合安全预期。
3. 权限验证
登录后仅可操作 /Users/sshuser 目录,无法访问系统目录、其他用户文件,权限隔离到位。
六、常用运维命令(备用)
# 查看所有用户
dscl . list /Users
# 删除 SSH 专用用户(无需使用时清理)
sudo dscl . -delete /Users/sshuser
sudo dscl . -delete /Groups/sshgroup
sudo rm -rf /Users/sshuser
# 刷新 SSH 权限列表
sudo launchctl kickstart -k system/com.openssh.sshd
七、总结
macOS 搭建仅 SSH 登录用户,核心就是 关闭桌面登录权限 + SSH 白名单管控 + 剥离管理员权限 三步。这套方案完全基于系统原生功能,无第三方依赖、无安全漏洞,完美适配远程协作、服务器运维、临时授权场景。
相比直接共享主账号、新建普通用户,最小权限的 SSH 专属用户,能最大程度保护你的 Mac 系统安全,建议所有需要远程 SSH 授权的场景优先使用。