每次我从 Mac 启动 ssh 连接到 Linux (Debian) 时,我都会收到此警告:
No xauth data; using fake authentication data for X11 forwarding.
Run Code Online (Sandbox Code Playgroud)
对于使用 ssh 的工具,如 git 或 mercurial,也会发生这种情况。
我只想对我的系统进行本地更改,以防止出现这种情况。
注意:我的 Mac OS X (10.8.1) 上确实有 X11 服务器 (XQuartz 2.7.3 (xorg-server 1.12.4)) 并且它工作正常,我可以在本地或远程成功启动时钟。
小智 109
没有一个已发布的解决方案对我有用。我的客户端(桌面)系统运行的是 macOS 10.12.5 (Sierra)。我添加-v了ssh命令的选项,它告诉我,
debug1: No xauth program.
Run Code Online (Sandbox Code Playgroud)
这意味着它没有正确的xauth程序路径。(在此版本的 macOS 上,路径xauth是非标准的。)解决方案是将此行添加到/etc/ssh/ssh_config(可能/etc/ssh/config在某些设置中)或~/.ssh/config(如果您没有管理员权限):
XAuthLocation /opt/X11/bin/xauth
Run Code Online (Sandbox Code Playgroud)
现在警告信息消失了。
sor*_*rin 24
找到原因,我的~/.ssh/config不完整,你需要两个:
Host *
ForwardAgent yes
ForwardX11 yes
Run Code Online (Sandbox Code Playgroud)
我的错误是我只包含了 ForwardX11 选项。
小智 19
ssh -X 以在远程服务器上获得 GUI 环境安装以下所有内容。在 Window 上,安装Xming. 在 Ubuntu bash 上,使用sudo apt install来安装ssh xauth xorg.
sudo apt install ssh xauth xorg
Run Code Online (Sandbox Code Playgroud)
转到包含ssh_config文件的文件夹,我的是/etc/ssh.
ssh_config以管理员身份编辑(USE sudo)。里面ssh_config,删除哈希#中的台词ForwardAgent,ForwardX11,ForwardX11Trusted,和相应的参数设置yes。
# /etc/ssh/ssh_config
Host *
ForwardAgent yes
ForwardX11 yes
ForwardX11Trusted yes
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
现在既然我们已经完成了ssh_config文件的编辑,当我们离开编辑器时保存它。现在转到文件夹~或$HOME,附加export DISPLAY=localhost:0到您的.bashrc文件并保存它。
# ~/.bashrc
...
...
export DISPLAY=localhost:0
Run Code Online (Sandbox Code Playgroud)
我们快完成了。重新启动 bash shell,打开Xming程序并使用ssh -X yourusername@yourhost. 然后享受GUI环境。
ssh -X yourusername@yourhost
Run Code Online (Sandbox Code Playgroud)
问题也出在 Windows 上的 Ubuntu 子系统中,链接位于
https://gist.github.com/DestinyOne/f236f71b9cdecd349507dfe90ebae776
注意:链接的文本包含 2 个错别字(XauthLocaion而不是XauthLocation)
小智 13
如前所述,似乎xauth在 OS X Yosemite 上已经退化到一个不适用于 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
Run Code Online (Sandbox Code Playgroud)