Sop*_*ert 20 ssh session command-line login-screen macos
如何从 SSH 诱导 Mac 图形登录?loginwindow在 Mac OS X 上以管理员身份通过 SSH 远程登录时,是否可以通过运行命令来使进程启动用户会话?
当机器处于登录窗口时(当前没有用户登录),我希望它打开一个用户会话,就像我点击了用户名并输入了密码一样。
不涉及编写 GUI 脚本的解决方案是非常受欢迎的,但这个 Apple KB 页面可能对那些走这条路的人感兴趣。
不知道密码会使事情变得复杂,但也许解决方案是:是否可以暂时清空用户的密码?(然后将其重置为之前的状态。)
作为开始:
首先,获取要显示的登录窗口。只需注销当前用户,使用快速用户切换,或使用 SSH:
cd "/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/" 须藤 ./CGSession -暂停
或者,立即切换到特定用户,这可能会显示登录窗口(这突然不再适用于我的 10.5 Leopard):
须藤 ./CGSession -switchToUserID 501
现在显示的内容有点取决于系统偏好设置,但让我们假设它是用户的图标和他们的名字。要激活一个名字,我们必须输入第一个字母。然后,在 Return 之后,显示密码提示。或者,您可以选择任何名称(例如按向下箭头),然后按 Option-Return 以提示输入任何用户名及其密码。我不知道如何判断显示的是哪个屏幕,但让我们将其保存以备后用...
因此,要选择第一个(随机)用户名并按 Option-Return,键入特定的用户名,按 Return,然后键入密码:
sudo osascript -e '告诉应用程序“系统事件” 密钥代码 125 击键返回使用选项向下 按键“用户名” 延迟 1.0 击键返回 延迟 1.0 按键“密码” 延迟 1.0 击键返回 结束告诉'
以上显示了一些错误,据我所知不会限制使用:
osascript[285]:3891612:(connectAndCheck)不受信任的应用程序不是
允许在登录前连接或启动 Window Server。
_RegisterApplication(), FAILED TO 建立默认连接到
WindowServer,_CGSDefaultConnection() 为 NULL。
或者,使用“通过 Apple 远程桌面编写登录窗口脚本”中的特定语言脚本(也许有一天该站点的评论会显示更好的解决方案):
告诉进程“SecurityAgent” 将窗口 1 的组 1 的文本字段 1 的值设置为“用户名” 将窗口 1 的组 1 的文本字段 2 的值设置为“密码” 结束告诉 单击应用程序“SecurityAgent”窗口 1 的“登录”按钮
但主要问题是:这仍然需要密码。但是:当用户的密码为空时,显然不需要密码。事实上,对于空白密码,只需单击用户的图标即可。因此,如果使用 AppleScript 发送击键是可以接受的,那么也许“所有”都需要弄清楚:
是否可以暂时清空用户的密码,以允许在不知道密码的情况下启动(或恢复)会话......?
可以使 AppleScript 防错吗?喜欢:
stat -f%Su /dev/console可以提供帮助,因为root在显示登录窗口时会产生)(测试注意事项:当使用屏幕共享时,似乎设置首选项控制计算机时:加密密码和击键也仅在显示登录窗口或用户成功登录后保留连接。使用加密所有网络时数据,那么每次显示登录或切换用户时,我的 Mac 都需要重新建立屏幕共享连接。)
| 归档时间: |
|
| 查看次数: |
9715 次 |
| 最近记录: |