CentOS

初心者向け CentOS7.9にVNCサーバ (tigervnc-server) 構築

記事内に商品プロモーションを含む場合があります
こんな人にお勧め
  • いろんなサイトを見ても途中経過が記載してなく不安になる人
  • 操作通りしたが動かない人
  • バージョンが古いやんかと思った人

インストールするソフトとバージョン tigervnc-server  Ver 1.8.0

前提条件

GNOME Desktop がインストールされていること

VNCパッケージをインストール

root権限で行ってください。

yum install tigervnc-server のコマンドでインストールします。

[root@localhost ~]# yum install tigervnc-server
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.cat.net
 * extras: mirrors.cat.net
 * updates: mirrors.cat.net
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ tigervnc-server.x86_64 0:1.8.0-22.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

==============================================================================================================
 Package                       アーキテクチャー     バージョン                    リポジトリー           容量
==============================================================================================================
インストール中:
 tigervnc-server               x86_64               1.8.0-22.el7                  updates               211 k

トランザクションの要約
==============================================================================================================
インストール  1 パッケージ

総ダウンロード容量: 211 k
インストール容量: 498 k
Is this ok [y/d/N]: y
Downloading packages:
tigervnc-server-1.8.0-22.el7.x86_64.rpm                                                | 211 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : tigervnc-server-1.8.0-22.el7.x86_64                                           1/1 
  検証中                  : tigervnc-server-1.8.0-22.el7.x86_64                                           1/1 

インストール:
  tigervnc-server.x86_64 0:1.8.0-22.el7                                                                       

完了しました!
[root@localhost ~]# 

VNCサーバの設定

下記のコマンドを実行し、設定ファイルをコピーします。

cp /lib/systemd/system/vncserver@.service /lib/systemd/system/vncserver@:3.service

今回はvncserver@:3.serviceなのでポート番号は5903となります。

vi /lib/systemd/system/vncserver@:3.service のコマンドで修正します。

”<USER>” の部分をVNCでログインするユーザー名(今回の場合は”shimaichi”)に変更します。

変更前の内容

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=simple

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver_wrapper <USER> %i
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

変更後の内容

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=simple

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver_wrapper shimaichi %i
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

パスワード設定

shimaichiユーザーのVNCログイン用のパスワードを設定するために

shimaichiユーザへ移動してパスワードを設定します。

参照のみのパスワードを入力しますか?と問われます。

ここは「y」で行きましょう。

次に su コマンドでroot権限に戻しときましょう。

[root@localhost ~]# su shimaichi
[shimaichi@localhost root]$ vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
A view-only password is not used
[shimaichi@localhost root]$
[shimaichi@localhost root]$ su
パスワード:

[root@localhost ~]#  

VNC デスクトップサイズ変更

VNC デスクトップのデフォルトサイズは 1024×768なので変更する場合は、

/usr/bin/vncserver_wrapper のファイルを修正する必要がありますのでバックアップしときましょう。

下記のコピーコマンドを実行し、設定ファイルをバックアップします。

cp /usr/bin/vncserver_wrapper /usr/bin/vncserver_wrapper.org

vi /usr/bin/vncserver_wrapper のコマンドで修正します。

赤字の部分を追加します。

#!/bin/sh

USER="$1"
INSTANCE="$2"

die() {
        echo "FATAL: ${@:-}" >&2
        exit 2
}

cleanup() {
        [ -n "$VNCPID" ] || return
        if kill -0 $VNCPID 2>/dev/null; then
                kill $VNCPID
        fi
}

trap cleanup TERM INT HUP

[ -n "$USER" -a -n "$INSTANCE" ] || die "Invalid usage!"

/usr/sbin/runuser -l "$USER" -c "/usr/bin/vncserver ${INSTANCE} -geometry 1920x1080"
[ $? -eq 0 ] || die "'runuser -l $USER' failed!"

# Wait up to 5 seconds for vncserver to be up
for tries in $(seq 1 50); do
        [ -e "~$USER/.vnc/$(hostname)${INSTANCE}.pid" ] && break
        sleep 0.1
done

eval HOME=~$USER

VNCPID=$(cat "$HOME/.vnc/$(hostname)${INSTANCE}.pid" 2>/dev/null || true)
[ -n "$VNCPID" ] || die "'vncserver ${INSTANCE}' failed to start after 5 seconds!"

echo "'vncserver ${INSTANCE}' has PID $VNCPID, waiting until it exits ..."

while kill -0 $VNCPID 2>/dev/null; do
        sleep 5
done

echo "PID $VNCPID exited, exiting ..."

設定を反映

設定ファイルの再読み込み

systemctl daemon-reload

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# 

再起動

systemctl restart vncserver@:3

[root@localhost ~]# systemctl restart vncserver@:3
[root@localhost ~]# 

自動起動の設定

systemctl enable vncserver@:3.service

[root@localhost ~]# systemctl enable vncserver@:3.service
[root@localhost ~]#

ステータス確認

systemctl status vncserver@:3.service

ファイヤーフォールの設定

ファイヤーフォールの追加をしてから、ファイヤーフォールの再読み込みを行ってください。

ファイヤーフォールサービスの削除も載せておきます。

ファイヤーフォールサービスの追加

firewall-cmd –permanent –zone=public –add-service=vnc-server

[root@localhost ~]# firewall-cmd --permanent --zone=public --add-service=vnc-server

ファイヤーフォールの再読み込み

firewall-cmd –reload

[root@localhost ~]# firewall-cmd --reload

ファイヤーフォールサービスの削除

firewall-cmd –permanent –zone=public –remove-service=vnc-server

[root@localhost ~]# firewall-cmd --permanent --zone=public --remove-service=vnc-server

接続確認

Macの場合は、「サーバへ接続」をクリック

下記の画面のように vnc://<IPアドレス>:5903と入力して「接続」をクリック

パスワードを入力して「サインイン」をクリック

左画面は、ログイン画面です。右画面がログイン後の画面です。

まとめ

画面サイズが大きくできなかったのでvncserver_wrapperのファイルを見て変更することができて良かったです。

インターネットで調べても載ってなかったので少し時間を費やした。

インフラエンジニアを目指す方へ

POSTED COMMENT

  1. 並のアマ より:

    とても為になるブログをありがとうございます。
    ファイアウォール設定のところで
    firewall-cmd –permanent –add-service=vnc-server
    のように、ハイフン2つを使う必要があるようです。

  2. 並のアマ より:

    すみません、書いた時には正しくハイフン2つが入っていたのですが、出力からは消えていますね・・

    • 島一 より:

      有り難うございます。
      ハイホン2つが正く表示されなくて申し訳ございません。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA