8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

OCI(Oracle Cloud Infrastructure)のComputeインスタンスで端末(PC等)へのX Window ssh転送が出来るように設定する。

Last updated at Posted at 2018-12-14

OCI(Oracle Cloud Infrastructure)のComputeインスタンスで端末(PC等)にX転送が出来るように設定してみるやで。
環境は OCI で OEL 7.6(Oracle Enterprise Linux 7.6) の仮想マシンで試してみます。

1. ターミナルソフト(teraterm等)のX転送設定

まずターミナルソフト(teraterm等)のX転送設定を有効にします。
下記のような記事をご参照下さい。

TeratermとX Windowサーバでsshのx11フォワーディング機能を利用する
https://orebibou.com/2015/02/teraterm%E3%81%A7ssh%E3%81%AEx11%E3%83%95%E3%82%A9%E3%83%AF%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E6%A9%9F%E8%83%BD%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B/

2. 端末(PC等)へのXサーバー(Xming等)導入と起動

端末(PC等)にXサーバー(Xming等)を導入して、起動しておきます。
下記のような記事をご参照下さい。

Xming環境構築
https://cell-innovation.nig.ac.jp/surfers/R_Xming.html

3. sshd_config の設定確認/変更/再起動

opcユーザーでログインして、sshd_config を編集します。

sudo vi /etc/ssh/sshd_config

「X11Forwarding yes」がセットされているのを確認します。

X11Forwarding yes

「AddressFamily inet」を追記します。

AddressFamily  inet

上記設定については↓のbugzillaに情報があります。

ssh -X shows shows error: X11 forwarding request failed on channel 0
https://bugzilla.redhat.com/show_bug.cgi?id=1436097

sshdサービスを再起動します。

sudo service sshd restart

4. ライブラリ(xauth)とテスト用アプリ(xeyes)のインストール

ライブラリ(xauth)とテスト用アプリ(xeyes)をyumでインストールします。

sudo yum install xorg-x11-xauth
sudo yum install xeyes

5. DISPLAY環境変数の確認とxeyesの起動

一度ターミナルを落としてログインし直します。
その後DIAPLAY環境変数を確認です。上手く行っていれば、自動でセットされているはず。

env | grep -i display
DISPLAY=localhost:10.0

xeyesを起動してみます。

xeyes

xeyes.jpg
見事に起動!(`・ω・)Ъ

6. AddressFamily inet の設定について

まずsshd_configに追記する「AddressFamily inet」の動作ですが、
これはsshdの接続でIPv4を強制することを意味します。

sshdで「IPv4」「IPv6」のどちらかのプロトコルのみ接続させる方法
https://www.server-memo.net/server-setting/ssh/addressfamily.html

そして前述の bugzilla のコメントでは、システム全体でIPv6が無効化されているのにも関わらず、
getaddrinfo()システムコールでIPv6のアドレス解決が失敗していると言及されています。

To my understanding, it looks like a problem that getaddrinfo() is returning AF_INET6 addresses
even though it is disabled "systemwide" (at least on Fedora as I tested).

解決策として sshd_config に「AddressFamily inet」追記して、
明示的にIPv4を選択することがすることが提示されています。

You can resolve the problem by explicitly selecting ipv4 (not any as mentioned in the description):
AddressFamily inet

bugzilla の中では、IPv6無効化時の getaddrinfo()システムコールの動作についての
意見も出されているようですが、特に対応はされていないようです。

ちなみに 2018年12月の時点では、OCI(Oracle Cloud Infrastructure) の
VCN(OCIの仮想ネットワーク)は IPv6 に対応されてない事が明記されています。

Oracle Cloud Infrastructure VCN - FAQ
https://cloud.oracle.com/ja_JP/bare-metal-network/vcn/faq
VCNはIPv6をサポートしていますか。
いいえ。現在、VCNはIPv6をサポートしていません。

7. まとめ

sshd_configへの「AddressFamily inet」追記がハマりポイントですかね。
今回はOEL 7.6環境で検証してますが、RedHat7系やCentOS7系も
IPv6が無効化されている場合は同様なんかと?彡(゚)(゚)

8. (追記) 踏み台経由で xeyes を起動

下記のような構成の場合は……彡(゚)(゚)

PC端末 → Public Compute(踏み台) → Private Compute(xeyes起動)

踏み台 → Private Compute の SSH接続時に -Xオプションを追加します。

(↓踏み台へのSSH接続後、Private Compute接続時に)
ssh -X xxxx.xxxx.oraclevcn.com
(↓Private Compute接続後に)
xeyes
8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?