macOS 创建仅 SSH 登录用户(无桌面权限、最小权限安全方案)

16次阅读
没有评论

日常使用 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 授权的场景优先使用。

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 0
评论(没有评论)
验证码