如何防止警告没有xauth数据?使用伪造的身份验证数据进行X11转发?


65

每次我启动从Mac到Linux(Debian)的ssh连接时,都会收到以下警告:

No xauth data; using fake authentication data for X11 forwarding.

对于使用ssh的工具(例如git或mercurial),也会发生这种情况。

我只想对我的系统进行本地更改,以防止这种情况出现。

注意:我的Mac OS X(10.8.1)上确实有X11服务器(XQuartz 2.7.3(xorg-server 1.12.4)),并且它可以正常工作,我可以在本地或远程成功启动时钟。


1
您正在使用什么命令来ssh?
DerfK

@DerfK只是,ssh hostname但在我之前~/.ssh/config添加的我中ForwardX11 yes。仍然是我确实想要在那里的东西。
索林2012年

我放弃使用Ubuntu 16.04 LTS(2017年8月)。底线是,即使它给出了错误,它仍然可以工作。我ssh -Y hostname在Linux上以及ssh -x hostnameWindows上使用OpenSSH时使用。
SDsolar '17

Answers:


64

没有发布的解决方案对我有用。我的客户端(桌面)系统正在运行macOS 10.12.5(Sierra)。我添加-vssh命令的选项,它告诉我,

debug1: No xauth program.

这意味着它没有正确的xauth程序路径。(在此版本的macOS上,路径xauth是非标准的。)解决方案是将此行添加到/etc/ssh/ssh_config(可能是/etc/ssh/config在某些设置中)或添加到~/.ssh/config(如果您没有管理员权限):

XAuthLocation /opt/X11/bin/xauth

现在,警告消息消失了。


10
我的天啊。多年以来,我一直在寻找解决方案,并且这种方法行之有效。我说的岁月!请注意,我是通过Host *~/.ssh/config文件的条目下添加该行而不是编辑来完成此操作的/etc/ssh/ssh_config。我为此找到的唯一文档是在中man sshd_config
Demitri '17

这也为我工作。据我了解,由于缺乏资金,目前XQuartz维护得不好。因此,我认为此类移植问题实际上比我预期的要少。
AlanObject '17

在高塞拉山脉;这也是对我有用的。
mklein9'3

1
请注意,即使您的Shell可以在PATH中找到xauth,也可能会遇到此问题!我猜出于安全原因,ssh客户端正在清理您的PATH?
MarcH

1
该解决方案对我不起作用。我在Win7上使用Cygwin。在“ Host *”条目下或在〜/ .ssh / config中的该行之前添加“ XAuthLocation / usr / bin / xauth”,没有区别。
David M. Karr

22

找到原因,我~/.ssh/config还不完整,您需要两个:

Host *
    ForwardAgent yes
    ForwardX11 yes

我的错误是我只包含ForwardX11选项。


12
我不确定为什么需要/相关。ForwardAgent用于允许缓存在其中的密钥ssh-agent通过多个嵌套的SSH连接传递。它应该与X11没有任何关系。还有,据某些人士称,这不是一个安全的好主意:heipei.github.io/2015/02/26/…–
underscore_d

2
听起来不对,实际上有助于关闭X11转发或修复xauth配置以进行设置。它与ssh代理无关。
eckes

此解决方案对我不起作用。
David M. Karr

~/.ssh/config在macOS客户端还是Linux服务器上?这些文件都没有。我有一个类似的/etc/ssh/sshd_config
最大科普兰

12

让Windows 10上的Ubuntu bash运行ssh -X 以在远程服务器上获取GUI环境

  • 第一

安装以下所有内容。在Window上,安装Xming。在Ubuntu bash上,使用sudo apt installinstall ssh xauth xorg

sudo apt install ssh xauth xorg
  • 第二

转到包含ssh_config文件的文件夹,我的是/etc/ssh

  • 第三

ssh_config以管理员身份编辑(USE sudo)。里面ssh_config,删除哈希#中的台词ForwardAgentForwardX11ForwardX11Trusted,并设置相应的参数yes

# /etc/ssh/ssh_config

Host *
    ForwardAgent yes
    ForwardX11 yes
    ForwardX11Trusted yes
  • 向前

ssh_config文件中,删除和#之前的前哈希,Port 22并在文件Protocol 2末尾添加新行以声明xauth文件的位置XauthLocation /usr/bin/xauth,请记住编写您自己的xauth文件路径。

# /etc/ssh/ssh_config

#   IdentifyFile ...
    Port 22
    Protocol 2
#   Cipher 3des
#   ...
#   ...
    ...
    ...
    GSSAPIDelegateCredentials no
    XauthLocation /usr/bin/xauth
  • 第五

现在,由于我们已经完成了ssh_config文件编辑,因此在离开编辑器时将其保存。现在转到文件夹~$HOME,将其追加export DISPLAY=localhost:0.bashrc文件中并保存。

# ~/.bashrc
...
...
export DISPLAY=localhost:0
  • 持续

我们快完成了。重新启动bash shell,打开Xming程序并使用ssh -X yourusername@yourhost。然后享受GUI环境。

ssh -X yourusername@yourhost

问题也出现在Windows的Ubuntu子系统中,并且链接位于

https://gist.github.com/DestinyOne/f236f71b9cdecd349507dfe90ebae776

注意:链接的文本包含2个错别字(XauthLocaion而不是XauthLocation


问题不在于Windows。
kasperd

在MacOS上,它几乎是相同的,不同之处是Xming,我们应该得到XQuartz,并且ssh_config文件位于不同的位置,我的是/private/etc/ssh
DestinyOne

而且,最后一行ssh_config是:XAuthLocation /opt/X11/bin/xauth
DestinyOne

2
需要修改:XauthLocaion-> XauthLocation(该修改对于我来说太小了)。
echristopherson

1
除了安装xmingsshxauth,和xorg(步骤1),需要我的唯一的事情就是export DISPLAY=localhost:0
齐名的

11

如前所述,xauth在OS X上,优胜美地似乎已退回到旧版本,无法与XQuartz的$DISPLAY设置一起使用:

% xauth -V
1.0.9
% xauth generate $DISPLAY .
xauth: (argv):1:  bad display name "/private/tmp/com.apple.launchd(...)/org.macosforge.xquartz:0" in "add" command

1
我在OS X 10.11上测试了相同的行,但没有收到任何错误。仍然是相同版本的XQuartz。
索林

1
@guest您的xauth generate $DISPLAY .命令在Mac OS X High Sierra(10.13)上有效,并且解决了我的No xauth data; using fake authentication data for X11 forwarding.pb。
SebMa '18

2

目前,MacOS中存在一个错误。我也碰到过这一点。对我来说,此修复程序涉及将以下内容添加到我的.bash_profile中

dispdir=`dirname $DISPLAY`
dispfile=`basename $DISPLAY`
dispnew="$dispdir/:0"
if [ -e $DISPLAY -a "$dispfile" = "org.x:0" ]; then
  mv $DISPLAY $dispnew
fi
export DISPLAY=$dispnew

本质上,与X根目录关联的文件管道的名称无法正确处理,因此需要更正。:-)


我怀疑这是否可以解决GUI OS X应用程序(如SourceTree)中的错误。
索林

确认它确实可以在Sierra上运行以使用X运行emacs-因为Mac是服务器。这一点应在广泛的情况下工作,其中客户端是在远程机器上
马克·穆林


1

我刚刚从我的根文件夹中删除了〜/ .Xauthority(目标计算机),然后再次使用ssh -X 192.168.123.1,ik正常工作。


我可以确认这是Mac OS Sierra 10.12.4上的答案。 删除 SSH服务器上的〜/ .Xauthority可以解决这个问题: ~$ mv ~/.Xauthority ~/.Xauthority.bak 重新登录后,新的魔术cookie会自动放回〜/ .Xauthority中。完全不需要Bash脚本。
肯尼斯·飞马

1

就我而言,这是.Xauthority包含未转发魔术cookie的问题,http: //askubuntu.com/questions/571116/上的Fabby 建议在2014-11-14上在.bashrc末尾添加此行或。配置文件,以允许在调用su时在用户之间转发xauth密钥:

export $(dbus-launch)

我之前也添加了:

export XAUTHORITY=~/.Xauthority 

确保使用ssh -X̍@远程调用将找到它。

就我而言,.Xauthority是原始用户/ home //的符号链接。

  cd /home/<child_user>;ln -sf /home/<parent_user>/.Xauthority .xAuthority

拥有正确的权利:

  sudo chown <parent_user> /home/<parent_user>/.profile
  chmod a+rw /home/<parent_user>/.profile 

因此它可以访问。将能够在整个代理帐户上触发应用并在其本地屏幕上显示X窗口结果!

提示:检查xauth列表...是否在上反映了魔术cookie。


0

我将其添加为评论,但是我没有足够的代表。在sorin的解决方案中再增加一条线对我有用

使用打开您的ssh配置文件,vim ~/.ssh/config 然后向其中添加以下行:

Host *
    ForwardAgent yes
    ForwardX11 yes
    XAuthLocation /opt/X11/bin/xauth

您可以使用以下方法再次检查您的xauth位置:

which xauth

不知道这是否真的有效,因为每个远程计算机上的xauth位置都不同。您的电脑看起来像MacOS,但Linux在不同的位置。我几乎开始完全禁用ForwardX11,因为我几乎从不使用它。
索林
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.