Cygwin/XでリモートのLinuxのアプリケーションをWindowsから利用する
概要
WindowsにX Serverをインストールして、VirtualBox上のLinuxでGUIアプリケーションを起動した時、Windows側にウィンドウが表示されるようにする。
- X Serverには Cygwin/X を使用。
- VirtualBox上のLinuxは Fedora 27。
以下、「ローカル側」はWindows、「リモート側」はVirtualBox上のLinuxを表すものとする。
インストール
CygwinによるX Window利用 を参考に、X11とopensshをインストールする。
X Server起動
ローカル側で、Cygwinのターミナルを起動し、以下を実行。
startxwin -- -listen tcp
タスクトレイにCygwin/X Serverのアイコンが表示される。
なお、Cygwin/Xをインストールすると、Windowsのスタートメニューに「Cygwin-X」というグループが作成され、そこに「XWin Server」というメニューが現れる。このメニューでもCygwin/X Serverを起動できるが、デフォルトではTCPでの接続を受け付けないようになっており、リモート側から接続することができない。
準備
Windows ファイアウォール
ローカル側で、ポート6000~6063くらいまでの受信を許可する。
Windows 10の場合は以下の手順で「Windows Defender ファイアウォール」の画面を表示する。
設定
→ネットワークとインターネット
→Windowsファイアウォール
→詳細設定
「Windows Defender ファイアウォール」の画面で、「受信の規則」に新しい規則を追加する。
プロトコルおよびポート:
項目 | 設定値 |
---|---|
プロトコルの種類 | TCP |
ローカルポート | 6000-6063 |
xauth
ローカル側で、新しいCygwinのターミナルを起動し、以下を実行。
export DISPLAY=localhost:0.0
xauth generate $DISPLAY
作成された .Xauthority
の内容を確認。
xauth list
出力結果の例:
MY-COMPUTER/unix:0 MIT-MAGIC-COOKIE-1 1234567890abcdef1234567890abcdef
利用時
ssh接続
ローカル側のCygwinのターミナルで、以下のように実行し、リモート側に接続する。ローカル側でCygwin/X Serverが実行中であるとする。
export DISPLAY=localhost:0.0
/bin/ssh -i /private/key/path -Y user@hostname
DISPLAY環境変数確認
リモート側で以下のように実行する。値が出力されることを確認する。
echo $DISPLAY
出力結果の例:
localhost:10.0
ssh接続時に、sshコマンドに -Y
オプションを指定しないと、値が空になる。
アプリケーション実行
リモート側で以下のように実行する。以下は xclock
を実行する例。
xclock
ローカル側に xclock
のウィンドウが表示されたら成功。
日本語入力設定
キーボード配列の設定
ローカル側で、Cygwin/XのXサーバが起動している状態とする。
以下のコマンドを実行する。
export DISPLAY=localhost:0.0
setxkbmap -model jp106 -layout jp
リモート側のibus設定
ssh接続中のリモート側で以下のように実行する。
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
export NO_AT_BRIDGE=1
xset -r 49
ibus-daemon -d -x
このコマンドを実行したターミナルから起動したアプリケーションでは、日本語入力ができる。
参考ページ
設定関連
- Cygwin/X
- CygwinによるX Window利用
- [メモ]リモートXの接続方法
- Cygwinでxauthを使う方法
- Windows用Xサーバ での日本語入力設定
- How to determine what ports X is listening on?
- Cygwin64 X設定メモ
トラブルシューティング関連
- X11Forwardingがうまくいかない場合の対処
- Warning: No xauth data; using fake authentication data for X11 forwarding
過去のメモ
以下は、必要かと思ったが、必要なさそうな手順。
xhost
ローカル側のCygwinターミナルで、以下のように実行する。リモート側のIPアドレスが192.168.10.2であるとする。
export DISPLAY=localhost:0.0
xhost 192.168.10.2
出力結果の例:
192.168.10.2 being added to access control list
xhostへのリモート側の追加は、X Serverを起動するたびに必要。
Author And Source
この問題について(Cygwin/XでリモートのLinuxのアプリケーションをWindowsから利用する), 我々は、より多くの情報をここで見つけました https://qiita.com/kagesumi3m/items/febde10d0c67ec471387著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .