You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS系统如何实现免密执行ssh root@localhost和su root命令

修复方案

1. 修正公钥存放路径

你之前执行的cat ~/.ssh/id_rsaK.pub >> ~/.ssh/authorized_keys是将公钥写入当前普通用户的授权列表,SSH登录root账户时会读取root用户目录下的授权文件,因此无法匹配。
操作步骤:

  • 执行su root输入密码切换到root账户
  • 执行mkdir -p /var/root/.ssh(目录已存在可忽略)
  • 执行cat /Users/[你的普通用户名]/.ssh/id_rsaK.pub >> /var/root/.ssh/authorized_keys,将[你的普通用户名]替换为你实际使用的Mac普通账户名

2. 修正SSH目录与文件权限

SSH对授权文件的权限要求严格,权限不符会直接拒绝认证:
在root账户下执行以下命令:

chmod 700 /var/root/.ssh
chmod 600 /var/root/.ssh/authorized_keys

3. 开启SSHD root登录权限

Mac系统默认禁止root账户通过SSH登录,需要手动修改配置:

  • 执行nano /etc/ssh/sshd_config编辑SSHD配置文件
  • 找到PermitRootLogin配置项,默认是注释状态或值为no,修改为:
    PermitRootLogin yes
    
    如果只允许密钥登录、禁止密码登录,可以改为PermitRootLogin prohibit-password,安全性更高
  • 保存退出后执行以下命令重启SSHD服务生效:
    sudo launchctl stop com.openssh.sshd && sudo launchctl start com.openssh.sshd
    

4. (可选)实现su root免密

如果需要执行su root时无需输入密码,可按以下操作配置:

  • 执行sudo visudo编辑sudoers配置文件
  • 找到%admin ALL=(ALL) ALL行,在下方新增一行:
    [你的普通用户名] ALL=(ALL) NOPASSWD: /usr/bin/su root
    
  • 保存退出后即可生效。

测试验证

退回普通用户后执行ssh root@localhost,无需输入密码即可正常登录即为配置成功。

内容的提问来源于stack exchange,提问作者calvin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 08:45:04