ねら~ITエンジニア雑記

やきうのお兄ちゃんが綴るOracle Databaseメインのブログ

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

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

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

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

TeratermX Windowサーバでsshx11フォワーディング機能を利用する 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

f:id:gonsuke777:20181214201315j:plain
xeyes起動画面

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

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接続後に)
ssh -X xxxx.xxxx.oraclevcn.com
(↓Private Compute接続後に)
xeyes