GNU screen 中的 ssh 无法正常工作

GNU screen 中的 ssh 无法正常工作

我尝试启动屏幕会话并使用同一个用户连接到三台不同的机器。

以下是我所拥有的.screenrc

screen -t "machine1" 0 ssh user@machine1
screen -t "machine2" 1 ssh user@machine2
screen -t "machine3" 2 ssh user@machine3

我的~/.ssh/config包含

ForwardX11 yes

machine2我在和的终端中收到以下错误machine3

Warning: No xauth data; using fake authentication data for X11 forwarding
/usr/X11/bin/xauth: error in locking authority file /home/user/.Xauthority

如果我从 .screenrc 中仅删除一台机器,它就可以正常工作。

我如何才能避免此错误并从屏幕连接到多台机器。

编辑:用户主目录位于 NFS 上,而锁定无法在 NFS 上正常工作。为了解决这个问题,我努力尝试将 XAuthority 文件放在本地文件系统 (/tmp) 上,或者每个 ssh 都有一个文件。但我没能成功,不知何故我的 xauth 似乎完全忽略了XAUTHORITY环境变量。仍然感到困惑...

答案1

/usr/X11/bin/xauth:锁定授权文件 /home/user/.Xauthority 时出错

您是否曾经遇到过同样的错误没有 screen,在建立第一个 SSH 会话后?奇怪的是,你的“如果我只删除其中一台机器[..],它就可以正常工作”似乎表明 2 台机器可以工作,但第三台机器会出现问题。如果ssh支持多个 X-forwarded 连接,那么可能只是运行速度变慢的问题?screen我想最好不要这样做。如果你改变机器的顺序会怎么样?

我猜测这个.Xauthority文件在远程机器上,但我不是专家。(如果/home/user你的问题实际上是一个更具体的目录,那么你可能很容易判断它是本地的还是远程的。)所以,奇怪的问题是:你确定这 3 台机器真的是不同的机器,而且没有其他人使用同一个帐户吗?来自man ssh

ssh还将自动在服务器计算机上设置 Xauthority 数据。为此,它将生成一个随机授权 cookie,将其存储在服务器上的 Xauthority 中,并验证任何转发的连接是否都带有此 cookie,并在打开连接时将其替换为真实 cookie。真正的身份验证 cookie 永远不会发送到服务器计算机(并且不会以明文形式发送任何 cookie)。

(您不能screen用替换吗ssh -f -N,或者您是否使用屏幕的标题来停止事情?)

相关内容