我尝试启动屏幕会话并使用同一个用户连接到三台不同的机器。
以下是我所拥有的.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
,或者您是否使用屏幕的标题来停止事情?)