sshでX11 Forwardingをsudoコマンド時に実施する方法

あったこと


表題のようにsshでX11 Forwardingでコマンドを実行したところ
下記のようなエラーになった

1
2
3
4
5
6
7
$ ssh -XY -l hoge xxx.xxx.xxx.xxx
$ sudo virt-manager
** (virt-manager:3166): WARNING **: Could not open X display
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
(virt-manager:3166): Gtk-CRITICAL **: gtk_settings_get_for_screen: assertion 'GDK_IS_SCREEN (screen)' failed
(virt-manager:3166): Gtk-CRITICAL **: _gtk_settings_get_style_cascade: assertion 'GTK_IS_SETTINGS (settings)' failed

どうやら認可が正しくできていない模様
(GTKのSCREEN系のエラーっぽく見えるところが、ややこしさに拍車かけてると思う・・・)

解決案


sudoコマンドを実行する際、Xauthorityを読み込むようにして実行する
(下記では、念の為xauthをインストールしている)

1
2
3
$ ssh -XY -l hoge xxx.xxx.xxx.xxx
$ sudo yum install xorg-x11-xauth
$ sudo  XAUTHORITY=~/.Xauthority virt-manager

強引に認可させているので、セキュリティ的に果たしてこれでいいのかという疑問は残りますね
何れにせよ、ローカルネットワーク内で実行するだけなのでこれでいいかなと。