0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Amazon DCVで始めるEC2デスクトップ環境 - Amazon Linux 2023への接続と複数ユーザー管理

Posted at

はじめに

最近、Amazon DCVを使って、Linuxインスタンスにデスクトップ接続する機会があったので、そこでの試行錯誤をまとめました。
まずはAmazon DCVでAmazon Linux 2023にデスクトップ接続できることを確認して、次にデフォルトのec2-user以外のユーザーで接続してみます。

なお、Amazon DCVでAmazon Linux 2023に接続できるのは、2025年4月1日に発表があったAL2023.7のバージョンからになります。

Amazon DCVについて

Amazon DCVとは?

Amazon DCV は、高性能のリモートディスプレイプロトコルです。さまざまなネットワーク条件で、リモートデスクトップやアプリケーションストリーミングをクラウドやデータセンターからあらゆるデバイスへ安全に配信できます。Amazon DCV と Amazon EC2 を使用すると、グラフィックスを多用するアプリケーションを Amazon EC2 インスタンス上でリモートで実行できます。結果をより控えめなクライアントマシンにストリーミングできるため、高価な専用ワークステーションが不要になります。

簡単に言えば、「サーバーにグラフィカルなデスクトップ環境で接続できるようにするサービス」です。EC2でLinuxサーバーを構築した場合、通常デスクトップ接続できませんが、このAmazon DCVを使うとデスクトップ環境に接続することが出来ます。

ちなみに、以前はNICE DCVという名前でしたが、2024年10月1日から、Amazon DCVに名前が変わりました。

セッションについて

Amazon DCVサーバーをLinuxに構築してアクセスするわけですが、アクセスする前にセッションを作成する必要があります。セッションには2種類あります。

  • コンソールセッション
    • セッションは同時に1つしか作成できない。つまり、1つのインスタンスに接続できるのは1人のみ
    • デフォルトで作成されるのはこちら
    • sudoつけないとcreateコマンドが実行できない
  • 仮想セッション
    • セッションは複数作成できる
    • ただし、複数接続する場合は、コンソールセッションよりリソースを使う。つまり、より高スペックのインスタンスが必要
      • 検証でt2.smallを使ったとき、仮想セッションだとフリーズした
    • sudoつけなくてもcreateコマンド実行できる

今回は、コンソールセッションを利用します。

Amazon Linux 2023にDCVで接続してみる

こちらの記事通りに、以下を実行します。

  • EC2インスタンスを作成(Amazon Linux 2023)
    • この時、t2.small以上のインスタンスタイプにする
  • セキュリティグループを修正
    • 8443ポートへの接続を許可する
  • GNOME Desktopをインストール
  • DCV serverをインストール
  • XDummy driverをインストール
    • コンソールセッション、またはGPUの共有を利用するときはこれを使う必要あり
  • DCVサーバーの設定ファイル(dcv.conf)の修正
    • DCVサーバー起動時に、ec2-userのユーザーでコンソールセッションを自動で作成する設定を追加
  • EC2の再起動
  • ec2-userのパスワード設定
    • 通常、EC2ではec2-userでログインするとき秘密鍵を使いますが、DCVではパスワード認証のため、パスワードを設定する

上記を実行した後、https://<EC2のIPアドレス>:8443 にアクセスすると、以下のようにDCVの認証画面が表示されます。

image.png

その後、Amazon Linux 2023の認証画面が表示されるのでその認証も実施すると、デスクトップ画面が表示されました。

image.png

デスクトップなので、ディレクトリをウィンドウで見たり、テキストエディタで編集ができます。もちろんターミナルも開くことが出来ます。

image.png

最後に、一旦Log Outをしておきましょう。

image.png

以上で、ec2-userでAmazon Linux 2023にデスクトップ接続することが出来ました。
次は、デフォルトのユーザー以外で接続を試してみます。

デフォルトユーザー以外で接続してみる

EC2インスタンス1台に対して複数のユーザーがアクセスする場合や、1台を1名が使うとしても複数ユーザーを作成して接続したい場合はあると思います。
それを想定して、デフォルトのec2-user以外のユーザーを作成して、このEC2インスタンスに接続してみます。

前提として、今回は1台のEC2には1人しか同時にアクセスしないとします。複数ユーザーが同時に1台のEC2インスタンスにアクセスすることは考えません。つまり、コンソールセッションを利用するということです。
セッションの違いについては、本記事のこちらをご覧ください。

ユーザー作成&パスワード変更

以下を実施して、user1という名前のユーザーを作成します。

sudo adduser user1

作成したユーザーのパスワードを変更します。

sudo passwd user1

パスワード認証を許可する

デフォルトでは、SSHではパスワード認証はできないようになっています。それを変更します。
以下を実施して、SSHサーバーの設定ファイルを開きます。

sudo vi /etc/ssh/sshd_config

以下の部分が元々noになっているはずなので、yesに変更します。

PasswordAuthentication yes

私の環境では、こんな感じになりました。
image.png

この設定は、DCVで接続する際には不要です。この後、新しいユーザーでDCVの接続をする際に、SSHでまず接続してからコンソールセッションを作成するために実施しています。
それも秘密鍵で接続することも可能だと思いますが、より簡単な方法で実施するために、パスワード認証でログインしようとしています。

sudoの実行を許可する

先ほどのユーザーはsudoで実行する権限を持っていないので、付与します。
以下を実行して、sudo権限周りの設定ファイルを開きます(こちらはnanoエディタで開きます)。

sudo visudo

以下を最後の1行として追加します。

user1    ALL=(ALL)    ALL

私の環境では、こんな感じになりました。
image.png

新しいユーザーSSH接続する

私はTera Termで接続していますが、先ほどのユーザー名とパスワードの認証で接続ができました(秘密鍵は使っていません)。
image.png

コンソールセッションの終了

現在、ec2-userがOwnerのコンソールセッションが作成されています。このままだと、DCVで認証できるのはec2-userだけです。user1でコンソールセッションを作成するために、まずは既存のセッションを終了します。

現在、サーバーが起動するたびに自動でec2-userがOwnerのコンソールセッションを作成するように設定されています。以下を実施することで、自動で作成されたコンソールセッション(名前はconsole)を終了します。

sudo dcv close-session console

コンソールセッション(Owner:user1)を作成

以下を実施して、コンソールセッションを作成します。

sudo dcv create-session "console" --type=console --owner "user1"

ちなみに、セッション作成で指定できるオプションなどは以下の公式ドキュメントで確認できます。

また、現在有効なセッションは、以下のコマンドで確認できます。

dcv list-sessions

私の環境では、以下のように表示されています。
image.png

新しいユーザーでDCVに接続

先ほどのDCV認証画面のページで、user1ユーザーでログインしてみます。

image.png

Linuxの認証を実施すると、こちらのユーザーでもログインすることが出来ました!
先ほどとユーザーが異なるので、作成したテキストファイルも存在していません。

image.png

ちなみに、今のuser1のコンソールセッションが存在する状態で、ec2-userでDCVの認証してみようとすると、以下のような表示が出て接続されません。Ownerで指定されているユーザーのみが、DCVでログインできます。

image.png

(任意)セッション自動作成の無効化

今回のように、複数の別ユーザーがセッションを作成する場合は、DCVサーバー起動時に自動でec2-userがOwnerのコンソールセッションが作成されてほしくありません。
そのため、以下を実行して、セッション自動作成を無効化します。

sudo vi /etc/dcv/dcv.conf

以下のように、falseに変更します。

create-session = false

私の環境では、以下のようになっています。
image.png

また、このdcv.confで指定できるパラメータは、以下に細かく載っているので、参考にしてください。

おわりに

今回は、Amazon DCVを使ってAmazon Linux 2023にデスクトップ接続してみました。
DCVについてはあまり使用例が多くなく、色々と手探りなところもあるので、今後も検証していきたいと思います。
最後に、よく使うセッション関連のコマンドをまとめておきます。

# コンソールセッションの作成
sudo dcv create-session "console" --type=console --owner "user1"

# セッションの終了
sudo dcv close-session console

# セッションの確認
dcv list-sessions
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?