无法在 MacOS Sierra 上 运行 "ssh -X"
Can't run "ssh -X" on MacOS Sierra
我刚升级到 MacOS Sierra,我意识到我似乎无法再在终端中 运行 "ssh -X" 命令。它曾经启动 xterm windows,但现在我好像连 -X 选项都没有了。在我更新之前它工作得非常好。除了从 OS X Yosemite 到 MacOS Sierra,我没有在设置中更改任何其他内容。
编辑:
根据建议,这是我在调试日志中发现的可能导致此问题的内容。
debug1: No xauth program.
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
升级到 Mac OS X Sierra 后,我在使用 -X
选项转发 X11 时遇到了同样的问题。
查看 ssh 选项 -Y
(受信任的 X11 转发)。在使用 ssh -Y <host>
时,事情对我有用。
我注意到 macOS Sierra 重置了我的 X11 设置,因此它禁用了我的 xAuth 程序。要在 macOS Sierra 上重新启用 xAuth:
- 重新安装 X11/xQuartz 大概会重置 macOS Sierra 所做的任何更改。我也在下面进行了以下更改,尽管听起来这可能就足够了。
- 加载终端
sudo <text editor of your choice> /etc/ssh/sshd_config
- 在该文件中,取消注释以下行,并将其设置为以下值:
X11Forwarding yes
X11DisplayOffset 10
- [更新于 10/07/2017] 当您重新安装 X11/XQuartz 时,最重要的是,它应该添加:
XAuthLocation <path_to_your_xauth>
我的 /opt/X11/bin/xauth。这可能是解释为什么重新安装有效的黄金步骤。
- 通过终端重新启动 ssh。我通过 运行 做到了这一点:
sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
我不需要重新安装 XQuartz,但是根据 Matt Widjaja 的回答,我想出了一个改进。
sudo vi /etc/ssh/ssh_config
(这是 ssh 客户端配置,不是 sshd_config)
- 在
Host *
条目下添加(或在适当的地方添加每个主机)
XAuthLocation /usr/X11/bin/xauth
(xauth 的位置在 Sierra 中发生了变化)
ServerAliveInterval 60
(每 60 秒 Ping 服务器以保持 ssh 连接有效)
ForwardX11Timeout 596h
(允许超过 20 分钟默认值的不受信任的 X11 连接)
无需重新启动 ssh,当然,现有的 ssh 客户端连接除外。
听起来 -Y(可信 X11)比不可信更可取。如果切换到受信任,则可能会删除 ForwardX11Timeout 行。
ServerAliveInterval 行也是可选的首选项。
也可以在 ~/.ssh/config
(用户的配置文件)中进行这些更改,但权限必须正确。
编辑:我删除了 ForwardX11 和 ForwardX11Trusted。它们不是必需的,而且 ForwardX11 的安全性较低并且会导致 git(或其他使用 ssh 的工具)出现问题。
只需将一行 XAuthLocation /usr/X11/bin/xauth
添加到 /etc/ssh/ssh_config
即可在我的 Mac、运行ning MacOS Sierra 上运行到 ssh进入 Linux 主机并能够远程 运行 X Windows 程序并让它们显示在我的 Mac.
上的 XQuartz 下
刚刚将我的 macbook 从 El Capitan 升级到 Sierra。使用 ssh -X [linux server]
只需重新安装 Xquartz 就可以解决问题
我的解决方案如下。
(1) 在尝试 ssh -X
之前启动 xquartz
。在xquartz选项里面,我只是开启了'Open at login',然后后台一直是运行。
(2) 转到 xquartz
首选项菜单,然后在安全性 window 上,单击显示 "Allow connections from clients".
的框
完成这些之后,一切正常。
我花了一整天的时间寻找解决方案,才发现最近的 Sierra 没有安装 XQuartz https://support.apple.com/en-gb/HT201341. Upon install (https://www.xquartz.org/)一切正常。
如果安装了 Quartz,只需在 /etc/ssh/ssh_config 文件的 "Host *" 下添加行 "X11Trusted yes"。
重新启动 XQuartz 对我有用。
这是一个老问题,但我最近 运行 在我的 Mac 运行 10.12.6 上遇到了同样的问题。 DISPLAY
变量未在终端中设置,ssh -X
不起作用。这就是我所做的解决问题的方法:
使用 Homebrew 重新安装 XQuartz:
brew cask install xquartz
(可能需要选项 --forced
)
将 XQuartz 启动器添加到系统默认值(遵循此 Reddit post 中的解决方案:
launchctl load -w /Library/LaunchAgents/org.macosforge.xquartz.startx.plist
重启系统。
完成这些后,我的 DISPLAY
变量设置正确:
$ echo $DISPLAY
/private/tmp/com.apple.launchd.mfXFpzZ0gC/org.macosforge.xquartz:0
并且 ssh 中的 X11 转发也能正常工作。
在我的例子中,在通过 brew install --cask xquartz
安装 XQaurtz 后在 macOS 主机上将 XAuthLocation /opt/X11/bin/xauth
添加到 /etc/ssh/sshd_config
(注意它不是 /etc/ssh/ssh_config
),因为 XQaurtz 提供 xauth
二进制
我刚升级到 MacOS Sierra,我意识到我似乎无法再在终端中 运行 "ssh -X" 命令。它曾经启动 xterm windows,但现在我好像连 -X 选项都没有了。在我更新之前它工作得非常好。除了从 OS X Yosemite 到 MacOS Sierra,我没有在设置中更改任何其他内容。
编辑:
根据建议,这是我在调试日志中发现的可能导致此问题的内容。
debug1: No xauth program.
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
升级到 Mac OS X Sierra 后,我在使用 -X
选项转发 X11 时遇到了同样的问题。
查看 ssh 选项 -Y
(受信任的 X11 转发)。在使用 ssh -Y <host>
时,事情对我有用。
我注意到 macOS Sierra 重置了我的 X11 设置,因此它禁用了我的 xAuth 程序。要在 macOS Sierra 上重新启用 xAuth:
- 重新安装 X11/xQuartz 大概会重置 macOS Sierra 所做的任何更改。我也在下面进行了以下更改,尽管听起来这可能就足够了。
- 加载终端
sudo <text editor of your choice> /etc/ssh/sshd_config
- 在该文件中,取消注释以下行,并将其设置为以下值:
X11Forwarding yes
X11DisplayOffset 10
- [更新于 10/07/2017] 当您重新安装 X11/XQuartz 时,最重要的是,它应该添加:
XAuthLocation <path_to_your_xauth>
我的 /opt/X11/bin/xauth。这可能是解释为什么重新安装有效的黄金步骤。
- 通过终端重新启动 ssh。我通过 运行 做到了这一点:
sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
我不需要重新安装 XQuartz,但是根据 Matt Widjaja 的回答,我想出了一个改进。
sudo vi /etc/ssh/ssh_config
(这是 ssh 客户端配置,不是 sshd_config)- 在
Host *
条目下添加(或在适当的地方添加每个主机)XAuthLocation /usr/X11/bin/xauth
(xauth 的位置在 Sierra 中发生了变化)ServerAliveInterval 60
(每 60 秒 Ping 服务器以保持 ssh 连接有效)ForwardX11Timeout 596h
(允许超过 20 分钟默认值的不受信任的 X11 连接)
- 在
无需重新启动 ssh,当然,现有的 ssh 客户端连接除外。
听起来 -Y(可信 X11)比不可信更可取。如果切换到受信任,则可能会删除 ForwardX11Timeout 行。
ServerAliveInterval 行也是可选的首选项。
也可以在 ~/.ssh/config
(用户的配置文件)中进行这些更改,但权限必须正确。
编辑:我删除了 ForwardX11 和 ForwardX11Trusted。它们不是必需的,而且 ForwardX11 的安全性较低并且会导致 git(或其他使用 ssh 的工具)出现问题。
只需将一行 XAuthLocation /usr/X11/bin/xauth
添加到 /etc/ssh/ssh_config
即可在我的 Mac、运行ning MacOS Sierra 上运行到 ssh进入 Linux 主机并能够远程 运行 X Windows 程序并让它们显示在我的 Mac.
刚刚将我的 macbook 从 El Capitan 升级到 Sierra。使用 ssh -X [linux server]
只需重新安装 Xquartz 就可以解决问题我的解决方案如下。
(1) 在尝试 ssh -X
之前启动 xquartz
。在xquartz选项里面,我只是开启了'Open at login',然后后台一直是运行。
(2) 转到 xquartz
首选项菜单,然后在安全性 window 上,单击显示 "Allow connections from clients".
完成这些之后,一切正常。
我花了一整天的时间寻找解决方案,才发现最近的 Sierra 没有安装 XQuartz https://support.apple.com/en-gb/HT201341. Upon install (https://www.xquartz.org/)一切正常。
如果安装了 Quartz,只需在 /etc/ssh/ssh_config 文件的 "Host *" 下添加行 "X11Trusted yes"。
重新启动 XQuartz 对我有用。
这是一个老问题,但我最近 运行 在我的 Mac 运行 10.12.6 上遇到了同样的问题。 DISPLAY
变量未在终端中设置,ssh -X
不起作用。这就是我所做的解决问题的方法:
使用 Homebrew 重新安装 XQuartz:
brew cask install xquartz
(可能需要选项--forced
)将 XQuartz 启动器添加到系统默认值(遵循此 Reddit post 中的解决方案:
launchctl load -w /Library/LaunchAgents/org.macosforge.xquartz.startx.plist
重启系统。
完成这些后,我的 DISPLAY
变量设置正确:
$ echo $DISPLAY
/private/tmp/com.apple.launchd.mfXFpzZ0gC/org.macosforge.xquartz:0
并且 ssh 中的 X11 转发也能正常工作。
在我的例子中,在通过 brew install --cask xquartz
安装 XQaurtz 后在 macOS 主机上将 XAuthLocation /opt/X11/bin/xauth
添加到 /etc/ssh/sshd_config
(注意它不是 /etc/ssh/ssh_config
),因为 XQaurtz 提供 xauth
二进制