如何从命令行在 Mac 上启用 SSH

从 Mac 命令行启用 SSH

所有运行 macOS 或 Mac OS X 的现代 Mac 都默认预装了 SSH,但 SSH(安全外壳)守护进程也默认被禁用。高级 Mac 用户可能会很高兴知道启用 SSH 和禁用 SSH 的功能都完全可以从 Mac OS 的命令行获得,从而允许以一种简单的方式允许或禁止远程连接到计算机。无需加载、下载或编译任何 kext,即可从任何 Mac 上的终端打开 SSH,您只需执行系统设置命令,正如我们将在本教程中展示的那样。

一个简短的旁注;本指南适用于所有版本的 macOS 和 Mac OS X,但实际上是针对在终端上花费大量时间的更高级用户。如果您想关闭和打开 SSH 并避免使用命令行,您可以通过启用在 Mac 上的“共享”首选项面板中远程登录,或通过不选中它来停止服务器。如果您不经常使用 ssh,则没有理由在 Mac 上启用 ssh 服务器。

如何通过终端检查Mac OS是否启用了SSH远程登录

想要检查 Mac 上 SSH 的当前状态?使用 systemsetup 命令字符串,我们可以快速确定当前是否在任何 Mac 上启用了 SSH 和远程登录:

sudo systemsetup -getremotelogin

如果当前启用了远程登录和 SSH,命令和报告将显示“远程登录:开启”,而如果禁用 SSH 并处于默认的 macOS 状态,它将显示“远程登录:关闭”。

使用系统设置从命令行在 Mac 上启用 SSH

要快速打开 SSH 服务器并允许传入的 ssh 连接到当前的 Mac,请在系统设置中使用 -setremotelogin 标志,如下所示:

sudo systemsetup -setremotelogin on

sudo 是必需的,因为 systemsetup 命令需要管理员权限,就像您启用远程登录一样从 Mac 上的共享首选项启用安全外壳服务器。

没有确认或消息表明远程登录和 SSH 已启用,但您可以使用前面提到的 -getmorelogin 标志来检查和验证 SSH 服务器确实正在运行。是的,使用 -setremotelogin 适用于在 Mac 上启用 ssh 和 sftp 服务器。

启用 ssh 后,任何用户帐户或拥有在当前 Mac 上登录可以使用针对 Mac 的 IP 地址 的 ssh 命令远程访问它,如下所示:

ssh osxdaily@192.168.1.115

连接后,用户将可以通过命令行远程访问计算机,如果他们有管理员帐户或管理员密码,他们也将拥有完全的远程管理访问权限。

使用 systemsetup 在 Mac OS 上关闭 SSH

如果你想从命令行禁用 SSH 服务器从而阻止远程连接,只需使用系统设置的 -setremotelogin 标志将“打开”切换为“关闭”,如下所示:

sudo systemsetup -setremotelogin off

同样,sudo 是关闭 SSH 并禁用 ssh 和 sftp 服务器所必需的。

当您成功执行该命令时,系统会询问您:“您真的要关闭远程登录吗?如果这样做,您将失去此连接并且只能在服务器本地重新打开它(是/否)?” 因此键入“是”进行确认,这将禁用 SSH 并断开任何活动的 SSH 连接到有问题的 Mac。如果你想避免必须输入是/否,也许是为了包含在安装脚本中或以其他方式,你可以使用 -f 标志来绕过这样的问题:

sudo systemsetup -f -setremotelogin off

同样,您也可以使用 -f 跳过任何有关启用 SSH 的提示。

systemsetup -f -setremotelogin on

请注意,无论您是关闭 SSH 还是从命令行启用 SSH,远程Mac OS X GUI 中的登录 系统首选项面板设置也将相应地进行调整以反映更改。