XQuartz で openssh の X 転送がうまくいかなかったので、調べてみました。

環境

  • macOS High Sierra 10.13.3, macOS Sierra 10.12.6
  • XQuartz 2.7.11

インストール方法

XQuartz は brew cask install xquartz で入れました。 手動でダウンロードしてインストールした時もあまり違いはなさそうです。

初回の問題

初回インストール時はインストーラーの最後で再起動を促されますが、再起動した後でもダメでした。

そもそも、再起動していないと ssh 経由でない状態でも X が起動しないので、今回は無関係でした。

X 転送の許可の問題

接続先の /etc/ssh/sshd_configX11Forwarding yes になっていて、ちゃんと許可されていました。

xauth の問題

色々悩んだ末、 ssh -Xv のように -v をつけてデバッグログを表示させて、よくみてみると、

debug1: No xauth program.
Warning: untrusted X11 forwarding setup failed: xauth key data not generated

と出ていて xauth の問題だとわかりました。

なぜか /opt/X11/bin にパスが通っていなかったのが原因らしく、 ~/.ssh/config

XAuthLocation /opt/X11/bin/xauth

と設定して X サーバー側 (XQuartz 側) の問題は解決しました。

これとは別に X クライアント側 (ssh で接続した先) でも xauth がない環境があったので、 sudo apt install xauth でインストールして解決しました。

PATH の問題

動作確認によく使っている xeyes などもローカル環境で起動しなかったので、普通は /opt/X11/bin にパスを通しておいた方が良さそうです。 普段使っている iTerm2 + zsh ではなく Terminal.app + bash だと問題なくパスが通っていたので、パスが通らないのは、自分の設定の問題の可能性もたかそうでした。

/etc/paths.d/40-XQuartz/opt/X11/bin と書かれていて、普通はこれでパスが通るようです。

まとめ

X 転送ができなかった環境で原因と対策を調べてみました。

結局、ログが重要ということで、原因追求にはサーバー側のログを見たり ssh-v の数を増やしてログをしっかりみたりするしかないようです。

Disqus Comments

Kazuhiro NISHIYAMA

Ruby のコミッターとかやってます。 フルスタックエンジニア(って何?)かもしれません。 About znzに主なアカウントをまとめました。

znz znz


Published