每次我从Mac到Linux(Debian)发起ssh连接时,都会收到以下警告: git或mercurial。

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

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

评论

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

@DerfK只是ssh主机名,但是在我的〜/ .ssh / config中,我是在前一段时间添加ForwardX11的。仍然是我确实想要的东西。

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

#1 楼

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

debug1: No xauth program.


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


警告消息消失了。

评论


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

– Demitri
17年7月10日在6:07



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

– AlanObject
17年7月23日在17:09

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

–mklein9
18 Mar 10 '18 at 23:52

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

– MarcH
18年5月24日在15:55



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

– David M. Karr
19年1月24日在21:22

#2 楼

找到了原因,我的~/.ssh/config不完整,您都需要:

Host *
    ForwardAgent yes
    ForwardX11 yes


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

评论


我不确定为什么需要/相关。 ForwardAgent用于允许ssh-agent中缓存的密钥通过多个嵌套的SSH连接。它应该与X11没有任何关系。还有一些人说,从安全角度考虑,这不是一个好主意:heipei.github.io/2015/02/26/…

– underscore_d
15年9月24日在21:08

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

–eckes
17-09-22在6:42



此解决方案对我不起作用。

– David M. Karr
19年1月24日在21:23

是〜/ .ssh / config在macOS客户端还是Linux服务器上?这些文件都没有。我确实有一个类似的/ etc / ssh / sshd_config

–Max Coplan
19-09-11的1:30

在Mac OS上,我还必须添加“ XAuthLocation / opt / X11 / bin / xauth”

– beOn
20-10-16在20:25



#3 楼

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

安装以下所有程序。在Window上,安装Xming。在Ubuntu bash上,使用sudo apt install安装ssh xauth xorg

sudo apt install ssh xauth xorg



第二

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


第三

以管理员身份编辑ssh_config(请使用sudo)。在ssh_config内部,删除#ForwardAgentForwardX11行中的哈希ForwardX11Trusted,并将相应的参数设置为yes

# /etc/ssh/ssh_config

Host *
    ForwardAgent yes
    ForwardX11 yes
    ForwardX11Trusted yes



Forth

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。

–卡巴斯德
17年9月22日在7:53

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

– DestinyOne
17年9月22日在15:45

并且,ssh_config的最后一行将是:XAuthLocation / opt / X11 / bin / xauth

– DestinyOne
17/09/22在15:58



需要编辑:XauthLocaion-> XauthLocation(该编辑对于我来说太小了)。

–echristopherson
18年3月3日在4:05

除了安装xming,ssh,xauth和xorg(第1步)外,我唯一需要做的就是export DISPLAY = localhost:0

–名
18-3-8的3:35

#4 楼

如前所述,OS X Yosemite上的xauth似乎已退回到旧版本,无法与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


评论


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

–索林
16年1月1日在11:48

@guest您的xauth生成$ DISPLAY。该命令在Mac OS X High Sierra(10.13)上运行,并且解决了我的No xauth数据;使用伪造的身份验证数据进行X11转发。铅

–SebMa
18年8月10日在16:13

这不仅是特定于OS X的-运行xauth generate:0使警告在我的WSL / Debian客户端上消失了。

–sandyscott
20年5月11日20:56

#5 楼

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

评论


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

–索林
16 Mar 1 '16 at 11:49

确认它确实可以在Sierra上运行以使用X运行emacs-因为Mac是服务器。在客户端位于远程计算机上的情况下,这应该可以广泛地工作

–马克·穆林(Mark Mullin)
16 Dec 18'在16:24

#6 楼

在我的macOS Sierra 10.12.6中,在〜/ .ssh / config

中的

XAuthLocation / opt / local / bin / xauth
对我有用。与答案7的微小变化。

#7 楼

我将其添加为评论,但是我没有足够的代表。在sorin的解决方案中再增加一行对我来说是有效的。
Host *
    ForwardAgent yes
    ForwardX11 yes
    XAuthLocation /opt/X11/bin/xauth


您可以使用以下方法仔细检查vim ~/.ssh/config的位置:

which xauth


评论


不知道这是否真的有效,因为每台远程计算机上的xauth位置会有所不同。您的电脑看起来像MacOS,但Linux在不同的位置。我几乎开始完全禁用ForwardX11,因为我几乎从不使用它。

–索林
19年2月23日在8:23

@sorin也许他更新了问题,因为他解释了如何在答案中找到正确的位置。顺便说一句:这对我有用!

–clearlight
19年11月28日在12:18

#8 楼

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

评论


我可以确认这是Mac OS Sierra 10.12.4上的答案。删除SSH服务器上的〜/ .Xauthority可达到以下目的:〜$ mv〜/ .Xauthority〜/ .Xauthority.bak一旦我再次登录,一个新的魔术cookie会自动放回〜/ .Xauthority中。完全不需要Bash脚本。

–肯尼斯·飞马(Kenneth Pegasus)
17年5月31日在23:45



#9 楼

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

export $(dbus-launch)


我之前也添加过: />
以确保使用ssh -X̍@调用的远程程序都能找到它。

在我的情况下.Xauthority是与原始用户/home//.Xsu的符号链接。 。

export XAUTHORITY=~/.Xauthority 


并具有正确的权利:

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


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

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

#10 楼

我的目标是从macOS客户端获得基于ssh的安静命令行登录t Linux主机。例如。我不想看到任何横幅或消息。只需设置基于证书的登录名即可,这样我就可以在上输入一个别名,并在主机上得到提示。为此,我执行了以下操作:


在Debian 10 Linux主机上,我触摸(例如创建)
~/.hushlogin

但是,在macOS Catalina ssh客户端我收到消息:

没有xauth数据;在X11转发中使用伪造的身份验证数据。 br />
ssh -Y user@debian10


归根结底,@ ssanch的回答对我有用。但是,在我发现该解决方案之前,我偶然发现了一种可能对某些人有用的解决方法:到syslog而不是stderr,这也允许所需的安静登录。

#11 楼

在将Cygwin安装从一台PC转移到另一台PC后,这开始发生在我身上。问题似乎是主机名更改:魔术cookie不再与新PC的主机名相对应。

运行

本地Cygwin安装为我解决了问题-xauth list现在列出了与新PC的正确主机名关联的魔术cookie,并且警告不再出现。

评论


这是唯一为我工作的人!我只是想补充一下,该命令最初对我而言无效,我得到了... /。Xauthority不存在错误。要修复它,我只需要在主文件夹中使用touch .Xauthority创建一个空文件,然后再次重新运行上述xauth命令。

– Troropio
20 Mar 26 '20在9:58

我确实有一个现有的〜/ .Xauthority文件,试图寻找解决方案,感谢您让我知道它是必不可少的!

– Irfy
20-4-11的20:27