CentOS7にVNCを導入してリモートで操作する方法

たまには技術系ネタを・・・

CentOS7にVNCサーバ(画面を「見せる側」)の設定を行って、リモートからCentOSを操作できるようにしてみました。

実際に自分が構築する上でネットで試行錯誤した結果です。

「CentOS7 Minimal」を導入した直後からの設定を全て記載しているので、CentOS7の本当に初期の導入ができる人だったら、この手順で画面表示までできるはず。

スポンサーリンク
レクタングル大

VNCについて

VNCの詳細については様々なサイトで紹介されているので省略します。

基本的にVNCは以下のコンポーネントにわかれます

  • サーバ:見たい画面の側
  • クライアント:接続する側

今回のシナリオではCentOS7をリモートからGUIで操作したいってユースケースを考えています。

つまり、CentOS7にサーバをインストールします。

前提

今回VNCをCentOS7に導入するに当たって、ネットでの様々な情報を参考にしました。ただ、「完全にステップバイステップ」で導入できる情報が見当たらなかったので今回の執筆にいたりました。

この手順でCentOS7をセットアップすると、少なくとも「とりあえずGUIで操作したい」って要件は満たすことができるはずです。

ただ、CentOS7の本当に初期設定は省略します。

要約すると、とりあえずの前提は以下とします。

  • 使用するCentOS7は「CentOS-7-x86_64-Minimal-1804.iso」
  • IPアドレス・Gateway・DNSの設定は済
  • つまり、CentOS7からインターネットへのアクセスができることとする

また、あくまでもセキュリティを意識しないで良い環境を前提に考えているので、セキュリティの設定は一切していません。なので、その辺はしっかり念頭にいれて必要に応じてハードニングしてください。責任は負えません。

CentOS7の初期準備

まずは操作しやすいようにSSHでrootログインができるようにします。つまり、この作業はコンソール上から行うことになります。

sshd_configを修正します。

以下の箇所のコメントアウトを外します。

こんな感じです。

面倒なので、再起動して反映させます。

これで「root@IPアドレス」でログインできるようになります。

以降は全てSSHでの作業を想定しています。

tigervnc-serverのインストール

CentOS7にて使用できるVNCサーバ(tigervnc-server)をインストールします。

同時にGNOMEもインストールします。

以下をそのままコピペでも大丈夫です。(#以降)

“Complete!”を確認して、再起動します。

VNCの設定

ここからが本題です。

以下の通り、vncuserの設定を行います。このパスワードはVNCでGUIログインする時のパスワードではありません。あくまでもOSのパスワードです。

次にvncuserにsuしてパスワードを設定します。これが、VNCでGUIログインした時に使用するパスワードです。”view-only”は不要ですのでnを入力。

vncuserでプロセスを立ち上げるため、カスタマイズサービススクリプトを作成します。

そのままコピペで大丈夫です。

vncserver@:1.serviceの以下の2行を探します。

こちらの”<USER>”をvncuserに置き換えます。そして保存します。

次に、vncuserのxstartupファイルを修正します。

とは言っても、私の手順ではxstartup自体がないので、新たに作成します。

以下の2行をそのままコピペしてください。そして保存します。

後はvncserverをカスタマイズスクリプトで起動できる状態にします。

そして起動。statusが”success”になっているはず。

後ほど説明しますが、これだけだとまだダメです。後ほど説明します。

Firewalldを修正します。

Firewalldをリロードします。

これでVNCクライアントからアクセスできるはず!!!

vnc

真っ黒です!真っ黒です

これで苦労してる人が多いのでは?と思います。なので同じ苦労をしてる人のために(キーワードでGoogleで見つけれるために)何度も言います!

CentosでVNCでログインしようとした時に画面が黒くなる(真っ黒になる)場合、以下を確認しましょう。

まずはvncを停止します。

次にxstartupを確認します。上記の手順だと既にvncuserの.vncディレクトリに移ってるはずですが、念の為以下の通り移動します。

lsで見てみると・・・そうです。rootでxstartupを作ったんですよね。

これをvncuserにchownします。実行権限も念の為。

これで再度起動してみましょう。

vnc2

おおお!真っ黒な画面からGNOMEのGUIに変わりました!

ここから先はVNC関係ない、普通のGNOMEの設定です。

さて、そもそも今回VNCを入れたのは、実は理由があります。

Guacamoleサーバーと連携して、外部からアクセスする環境を作りたかった。

Guacamoleとの連携もできたので、後ほど紹介します。

勉強を再会する方へ
スポンサーリンク
レクタングル大
  • このエントリーをはてなブックマークに追加

コメント

  1. 匿名 より:

    groupaddしてからユーザーを作成していますが、グループに所属させる作業をしていないように感じるのです。
    私は全くの初心者で違っていたら申し訳ありません。

    あと、最初の起動ではactive (running)になるのですが、shutdown -r するとfailしてしまいます。
    色んな方のやり方を参考にして色々なパターンを試すのですがtiger-vncserverには私の場合なぜかsystemctlが効かず、どのやり方でも一度起動に成功した後、再起動後にFailしてしまいます。
    しかし、ネットではそういう現象を全く見ないので何か非常に初歩的な点で誤っているのだと思います。
    もし、お感じになるところがあればサイトに追記していただければ幸です。
    今後のご健勝をお祈り申し上げております。

  2. 舟山 和秀 より:

    いつもお世話になっております。
    すみません、先日うっかり無記名でコメントしてしまった者です。
    このページでご教示いただいているようにやってみたのですが、どうしてもrebootするとVNCが起動しません。
    ]# systemctl status vncserver@:1.service
    * vncserver@:1.service – Remote desktop service (VNC)
    Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled; vendor preset: disabled)
    Active: failed (Result: resources) since Sun 2018-11-25 12:53:19 JST; 58s ago
    Process: 1070 ExecStart=/usr/sbin/runuser -l kyokuto -c /usr/bin/vncserver %i (code=exited, status=0/SUCCESS)
    Process: 1050 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
    別のサーバーでも似た現象があり、ウエブサイトに投稿したように自分では解決したつもりだったのですが今回はダメでした。
    systemctl daemon-reloadしてsystemctl start vncserver@:1.serviceすれば再びrunningになるのですが、そのためにはサーバー提供社のコンパネに行かねばならず、あまり実用的ではありません。

    • CCIE_TOZAI より:

      連絡が遅くなり申し訳ありません。(スパムが多くて、全ての投稿のコメントに目を通すことができない状況です)
      この記事と同じ方法で構築したVNCサーバーを再起動(systemctl stop vncserver@:1.serviceの後にsystemctl start vncserver@:1.service。
      そしてreboot)の両方を試してみたのですが、問題なくVNCが起動しました。
      ただ、journalctlを見ると起動時に以下のエラーは出ています。
      SELinux is preventing /usr/libexec/geoclue from search access on the directory 14458. For complete SELinux messages run: sealert -l 188ec615-736c-418b-9537-d7a3b52d9159
      これはSELinuxを無効にすることで回避できると思います。ただ、それでも私の環境では動作しています。
      起動時に別ターミナルで「journalctl -f」を実行し、ログを追っていくと何らかの手がかりがあるかもしれません。

  3. CCIE_TOZAI より:

    追加情報です
    強制的にシステムを停止すると、以下のファイルが残って起動できないことがありました。
    ファイル名:/tmp/.X11-unix/X1
    journalctlのログ:
    Dec 8 04:10:30 jump runuser: Warning: jump.mylab.local:1 is taken because of /tmp/.X11-unix/X1
    Dec 8 04:10:30 jump runuser: Remove this file if there is no X server jump.mylab.local:1

    上記ファイルを削除して、再度systemctl startで成功しました。

コメントをどうぞ

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">