OCI(Oracle Cloud Infrastructure)のComputeインスタンスで端末(PC等)へのX Window ssh転送が出来るように設定する。
OCI(Oracle Cloud Infrastructure)のComputeインスタンスで端末(PC等)にX Windowがssh転送が出来るように設定してみるやで。
環境は 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
見事に起動!(`・ω・)Ъ
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