当用户从他们的 OS X (Snow Leopard) 工作站通过 SSH 连接到我们的一台 Linux 主机时,他们会时不时地收到以下消息:
/usr/bin/xauth: ~/.Xauthority not writable, changes will be ignored
当然,此时他们的 X 转发应用程序将不起作用。
但是,如果他们注销并重新登录,他们不会收到消息,并且一切都按预期工作。
在他们的 Mac 上,他们通过 AFP 获得他们的主目录。Linux 机器通过 NFS 获取它。
关于这里可能发生什么的任何想法?
我不禁想知道您是否看到了比赛条件,也许是这样的:
ssh
进入 Linux 主机,该主机安装 OS X 客户端已安装的主目录,但通过 AFP 执行此操作。在不同的尝试中,可能是:
1)他们正在尝试连接到已知主机并且 OS X 客户端不需要记录任何信息并且不访问 .Xauthority,或者 2)时间已经足够,以至于两个系统不尝试使用同一个文件同时[因此这是一个竞争条件]。
我不确定您如何判断是否是这种情况。我认为您可以使用服务器上的命令(或fseventer 之
fs_usage
类的 GUI 工具)来查看是否正在快速连续访问同一个文件,尽管这不一定能证明什么。您可以通过
lsof
在文件或 (lsof -i
) 网络连接上使用 , 来收集有用的信息。可能您可以打开 AFP 和 NFS 的日志记录(或使用nfsstat
?)并交叉引用它们。我会考虑编译iftop,但是,运行它时你应该看到的是,是的,Mac 客户端和 Linux 客户端都有到服务器的连接,并且它们使用不同的端口并传输信息。
我建议让测试用户 ssh 在 Mac 客户端和 Linux 主机上使用不同的帐户一段时间,看看他们是否会遇到问题。如果没有,那么它确实与同时在两个地方使用同一个帐户有关(很可能是由于两次安装主文件夹)。
是否可以将 OS X 和 Linux 配置为使用 Xauthority 文件的不同副本可能值得一看。(我不确定你是否能做到这一点)。
我还会尝试让测试用户通过 NFS 在 OS X 上访问他们的主文件夹,看看这是否有所不同。
很久以前就通过 ssh 启动了几十个 X 应用程序。ssh 使用 xauth,它本身会锁定 .Xauthority 文件,如果无法锁定它,它将失败。当时通过修改 xauth 程序以在锁上旋转来解决该问题,但不再有补丁。
如果 ssh_config 文件没有设置 ForwardX11,您可能必须在 ssh 命令上使用 -X。IE看看有没有
ssh -X 机器名
作品