AWS EC2環境のCentOS 7に何としてもVNCで接続したい。


はじめに

とある製品をセットアップするにあたり、どうしてもGUI環境が必要でした。
VNCというワードも今回初めて知りました。
とても苦しみながらも何とか接続できたので、備忘録として手順を記します。

1.CentOSのインスタンスを作成

AWS EC2上にCentOS 7のインスタンスを立てセットアップしていきます。

2.セキュリティ周りを変更

今回は簡易手順とするので、SELinuxおよびfirewalldは停止してしまいます。
※必要な場合はVNCの接続に必要な穴あけ等をしてあげてください。

SELinuxを無効化

# vi /etc/selinux/config

---disabledに変更
SELINUX=disabled
---

firewalldの無効化

#で始まっているコマンドはrootユーザで実行。
 EC2のrootユーザ切り替えはデフォルトで、sudo su -

# systemctl disable firewalld

※EC2のCentOS 7には firewalld が存在しないので不要。

設定の反映

# reboot

3.VNCサーバをセットアップ

VNCをサーバ側にインストール

# yum install -y tigervnc-server
# yum groupinstall -y "GNOME Desktop"

VNCを利用するユーザ/グループを作成

# groupadd vnc
# useradd vncuser
# passwd vncuser

VNC接続時に利用するパスワードを設定

# su - vncuser

$ vncpasswd
$ exit

VNCのサービスを作成

# cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:3.service

vncserver@:[数字].service
 ここの数字によって穴あけする ポート番号(590[数字]) が変わる。
 例)vncserver@:3.service → ポート番号:5903

VNCサービスの設定を変更

# vi /etc/systemd/system/vncserver@:3.service

---(ユーザ名を作成したものに変えて保存)
ExecStartPre=/bin/sh -c '/usr/bin/[ユーザ名] -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver_wrapper [ユーザ名] %i
ExecStop=/bin/sh -c '/usr/bin/[ユーザ名] -kill %i > /dev/null 2>&1 || :'
---
# cd /home/vncuser/.vnc/
# vi xstartup

---(新規作成)
#!/bin/sh
gnome-session &
---

★以下の権限設定がとても大事!!

# chown vncuser:vncuser xstartup
# chmod +x xstartup

VNCサービスを起動

# systemctl daemon-reload
# systemctl enable vncserver@:3.service
# systemctl start vncserver@:3.service
# systemctl status vncserver@:3.service

VNCクライアント側(Windows10)

適当なところから「VNC Viewer」をダウンロード

VNC Viewerを起動して以下設定

File -> NewConnection
VNC Server: [VNCサーバのIPアドレス]:[ポート番号]
※他の設定はデフォでもOK

== 注意 ==

EC2の セキュリティグループ穴あけ も忘れずに。。


参考

https://ccie-go.com/centos-vnc-1/
https://www.ipentec.com/document/linux-centos-7-vncserver-tigervncserver-install