如何通过 SSH 远程为 Mac 上的另一个帐户启用远程访问?

And*_*rei 24 mac ssh administration remote-access macos

我在远程 Mac 计算机上拥有管理员权限。我可以通过 SSH 访问它。Mac 有另一个用户帐户,它没有远程访问权限。如何远程(通过 SSH)为其他帐户启用远程访问?

Che*_*ion 20

用户的 SSH 访问由目录服务的本地副本控制。(控制使用dscl

首先运行dscl . list /Groups | grep 'access_ssh'。如果返回值表示com.apple.access_ssh-disabled所有用户都具有 SSH 访问权限。如果没有,那么我们需要授予用户访问权限。

要添加用户,您需要运行:

sudo dscl . append /Groups/com.apple.access_ssh user USERNAME
Run Code Online (Sandbox Code Playgroud)

(用用户的短用户名替换 USERNAME)以及:

sudo dscl . append /Groups/com.apple.access_ssh groupmembers `dscl . read /Users/USERNAME GeneratedUID | cut -d " " -f 2`
Run Code Online (Sandbox Code Playgroud)

(也用短用户名替换 USERNAME)

(最后一点要感谢list.apple.com上的Reed Stoner

仅为特定用户添加/启用远程管理(如果需要 VNC,请从ghoppe 的答案中添加 VNC 标志):

sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -users short,usernames,seperated,by,commas -access -on -restart -agent -privs -all -allowAccessFor -specifiedUsers

通过跑步了解更多信息 sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -h

  • access_ssh 的结构似乎随着时间的推移而发生了变化。第一个 dscl 命令中的关键“用户”现在应该是 GroupMembership。将 UID 附加到 groupmembers 的第二个 dscl 命令仍然有效。 (4认同)
  • Erik 是正确的 - @Chealion,您能否通过将命令更改为 `dscl 来更新您的答案。追加/Groups/com.apple.access_ssh GroupMembership <用户名>` (2认同)
  • 我在 10.11.5 上,命令没有抱怨,但用户仍然无法 ssh。编辑:试过这个并且它有效:https://support.apple.com/kb/PH18726 (2认同)

小智 12

根据 Chealion 的回答,我想出了这个以允许所有用户通过 ssh 进入:

dscl . change /Groups/com.apple.access_ssh RecordName com.apple.access_ssh com.apple.access_ssh-disabled
Run Code Online (Sandbox Code Playgroud)


小智 6

ssh访问权限授予com.apple.access_ssh组成员。这是您在通过共享首选项窗格对远程登录服务进行访问修改时正在编辑的组。

虽然dscl可用于编辑组成员资格(如其他答案中所述),但它dseditgroup是一种com.apple.access_ssh从命令行修改组成员资格的更简洁的方法。

添加用户:

sudo dseditgroup -o edit -t user -a USERNAME com.apple.access_ssh
Run Code Online (Sandbox Code Playgroud)

删除用户:

sudo dseditgroup -o edit -t user -d USERNAME com.apple.access_ssh
Run Code Online (Sandbox Code Playgroud)


gho*_*ppe 5

通过命令行启用远程桌面:

sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -access -on -clientopts -setvnclegacy -vnclegacy yes -clientopts -setvncpw -vncpw mypasswd -restart -agent -privs -all
Run Code Online (Sandbox Code Playgroud)

关闭屏幕共享:

sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -deactivate -configure -access -off
Run Code Online (Sandbox Code Playgroud)

编辑

好的,我可能误解了你的问题。我认为“远程访问”是指远程桌面,但现在我看到您只想为其他帐户启用 ssh 访问,对吗?

我的回答让你成功了一半。如图所示启用远程桌面后,然后连接远程 Mac 以通过系统偏好设置更改用户的 ssh 访问权限。

要连接到远程 Mac,请转到 Finder 并Connect to Server…在转到菜单下选择。输入您计算机的服务器地址:

vnc://x.x.x.x
Run Code Online (Sandbox Code Playgroud)

其中 xxxx 是远程计算机的 IP 地址或 URI。既然您使用 ssh 连接,我想您已经知道这一点。

现在您可以使用远程桌面导航到系统偏好设置 > 帐户,然后单击该框以允许其他帐户登录计算机...

  • 编辑了我的答案。可能有一种方法可以通过命令行启用 ssh 访问,因此您不必通过远程桌面执行此操作,但是这种方法也应该有效。 (2认同)