Featured image of post CachyOS + KDE Plasma 6 で KRDP(RDP)リモートアクセスのための自動ログイン設定

CachyOS + KDE Plasma 6 で KRDP(RDP)リモートアクセスのための自動ログイン設定

CachyOS(KDE Plasma 6 / Wayland)環境で KRDP を使った RDP リモートアクセスを実現するために、greetd の自動ログインを設定する手順。

今回使うサーバは、小型PCで普段はディスプレイを表示していないので基本的にはMacなどからリモート接続をして使うことを前提にしてます。Mac→PCの場合にはRDPがよくできていて不自由なく使えるのですが、PC→Macの場合やMac→Linux(GUI)の場合には少し注意が必要です。今回はPCはローカルLLM用途なのでSSHが利用できれば事足りるのですがいくつかのアプリはGUIも必要なためGUIのルートも開けています。完全に個人専用の用途になっているので注意をして下さい。

CachyOS + KDE Plasma 6 で KRDP による RDP 接続を使うには、greetd の設定で Plasma Wayland セッションを自動ログインさせるのがポイントです。KRDP はアクティブな Wayland セッションがないと動かないため、起動時にデスクトップセッションを自動で立ち上げておく必要があります。

今回の環境では CachyOS のディスプレイマネージャーが cosmic-greeter(greetd ベース) だったため、設定先は /etc/greetd/config.toml になりました。

前提環境

  • OS: CachyOS(Arch Linux 派生)
  • デスクトップ: KDE Plasma 6.x(Wayland セッション)
  • ディスプレイマネージャー: cosmic-greeter(greetd ベース)
  • ハードウェア: MINISFORUM HX370(AMD Ryzen 7 8845HS / Radeon 890M)
  • ネットワーク: Tailscale VPN 経由で SSH / RDP 接続

なぜ自動ログインが必要か

KRDP は KDE Plasma 6.1 以降に標準統合された RDP サーバーで、Wayland ネイティブ対応が強みです。ただし現時点ではアクティブな Wayland セッションを「共有」する設計になっており、ログアウト状態やグリーター画面で止まっている状態では接続できません。ヘッドレスセッション(物理ログインなしでの新規セッション作成)にも対応していません。

そのため、マシン起動時に自動でデスクトップセッションにログインさせ、KRDP が常に接続可能な状態を維持します。さらに、万が一ログアウトしてしまった場合にも自動でセッションが再起動されるようにしたいところです。

設定手順

KRDP のインストール確認

pacman -Q krdp

入っていなければインストールします。

sudo pacman -S krdp

ディスプレイマネージャーの確認

CachyOS のディスプレイマネージャーはインストール時期やエディションによって異なります。以前は SDDM が使われていましたが、時期によって cosmic-greeter に切り替わり、2026年1月リリースでは Plasma Login Manager が採用されています。まず何が動いているかを確認します。

# 動いているサービスを確認
systemctl list-units --type=service | grep -E 'sddm|gdm|greetd|cosmic|plasma.*login'

# 有効なサービスを確認
systemctl list-unit-files --state=enabled | grep -E 'sddm|gdm|greetd|cosmic|plasma.*login'

以下は cosmic-greeter(greetd ベース) が動いている場合の手順です。SDDM の場合は別途 SDDM の自動ログイン設定を参照してください。

cosmic-greeter から greetd への切り替え

cosmic-greeter は greetd をバックエンドとして使っていますが、独自の systemd サービスユニットとして動作します。重要なのは、cosmic-greeter.service は /etc/greetd/config.toml ではなく /etc/greetd/cosmic-greeter.toml を読み込むという点です。

cosmic-greeter.service の中身を見ると、以下のように起動コマンドが定義されています。

ExecStart=greetd --config /etc/greetd/cosmic-greeter.toml

つまり config.toml をいくら編集しても、cosmic-greeter.service が有効な限り反映されません。greetd.service に切り替える必要があります。

# cosmic-greeter を無効化
sudo systemctl disable cosmic-greeter

# greetd を有効化
sudo systemctl enable greetd

greetd の自動ログイン設定

まずバックアップを取ります。

sudo cp /etc/greetd/config.toml /etc/greetd/config.toml.bak

設定を書き換えます。

sudo tee /etc/greetd/config.toml << 'EOF'
[terminal]
vt = 1

[default_session]
command = "startplasma-wayland"
user = "your-username"
EOF

user は実際のユーザー名に置き換えてください。

greetd の [default_session][initial_session] の違いについて補足します。 greetd で自動ログインを実現する方法は2つあります。

  • [initial_session] — 起動時に1回だけ自動ログインする。ログアウトするとグリーター([default_session])に戻る。一般的な「自動ログイン」はこちら
  • [default_session] に直接セッションを書く — グリーターを経由せず、セッション終了後も自動でセッションが再起動される

今回は KRDP のためにログアウト後も常にデスクトップセッションが維持されている状態にしたいので、あえて [default_session] にセッションを直接指定しています。[initial_session] を使うと、ログアウト時にグリーターに戻ってしまい、KRDP が接続不能になります。

KRDP の自動起動を有効化

ログイン時に KRDP サーバーが自動で起動するよう設定します。

systemctl --user enable app-org.kde.krdpserver.service

KDE の GUI からも設定できます。システム設定 → リモートデスクトップ → 「リモートデスクトップを有効にする」をONにします。証明書(cert.pem / key.pem)は有効化時に ~/.config/krdp/ 配下に自動生成されます。

alt text

ファイアウォールで RDP ポートを開放

sudo firewall-cmd --permanent --add-port=3389/tcp
sudo firewall-cmd --reload

alt text

再起動して確認

sudo reboot

再起動後、SSH で接続して動作確認します。

echo "=== Sessions ===" && loginctl list-sessions && \
echo "=== KWin ===" && pgrep -a kwin && \
echo "=== Plasma ===" && pgrep -a plasmashell && \
echo "=== KRDP ===" && pgrep -a krdpserver && \
echo "=== Port 3389 ===" && ss -tlnp | grep 3389

自動ログインが成功していれば、ユーザーセッションが表示され、kwin_waylandplasmashell が動作しています。ポート 3389 がリッスンしていれば KRDP の準備完了です。

RDP で接続

Windows のリモートデスクトップ接続(mstsc)や Remmina から、CachyOS マシンの IP アドレスを指定して接続します。Tailscale VPN 経由なら 100.x.x.x のアドレスを使います。速度的にはローカル接続なのでもう少し早く動いてほしいというのが本音。

補足:KRDP の解像度

KRDP は物理ディスプレイのセッションを共有する設計のため、解像度は物理ディスプレイの設定に依存します。ヘッドレス運用ではデフォルト解像度になります。任意の解像度でリモート接続したい場合は xrdp の方が柔軟ですが、Wayland 対応と KDE 統合の良さでは KRDP に分があります。

補足:D-Bus セッションの問題

環境によっては startplasma-wayland の前に D-Bus セッションの初期化が必要になる場合があります。KRDP や KWallet など KDE の各種サービスが正しく起動しない場合は、コマンドを以下のように変更してみてください。

[default_session]
command = "/usr/lib/plasma-dbus-run-session-if-needed /usr/bin/startplasma-wayland"
user = "your-username"

/usr/lib/plasma-dbus-run-session-if-needed は KDE が提供するラッパースクリプトで、D-Bus セッションバスが存在しない場合に自動で起動してくれます。

ハマったこと

SDDM の設定を書いても効かない

KDE Plasma = SDDM という思い込みで /etc/sddm.conf.d/autologin.conf を作成しましたが、そもそも SDDM が動いていませんでした。loginctl list-sessionscosmic-greeter が表示されているのを見て初めて気づきました。CachyOS のディスプレイマネージャーはインストール時期によって変わるので、まず何が動いているかを systemctl で確認するのが先ですね。

config.toml を編集しても反映されない

greetd の config.toml を自動ログイン設定に書き換えて再起動しても、cosmic-greeter のログイン画面が表示されたまま変わりませんでした。原因は、cosmic-greeter.servicegreetd --config /etc/greetd/cosmic-greeter.toml という独自の設定ファイルを読み込んでいたためです。config.toml を変更するだけでなく、サービスユニットを greetd.service に切り替える必要がありました。

xrdp を試して戻した

KRDP の制約を知り xrdp への乗り換えも試みましたが、Arch 公式リポジトリにはなく AUR からの導入が必要でした。また xrdp は X11 のみ対応で Wayland セッションはサポートしていません。2025年時点でも xrdp の Wayland 対応は未実装で、開発チームが検討段階にある状況です。結局 KRDP + 自動ログインの方針に戻しました。

Hugo で構築されています。
テーマ StackJimmy によって設計されています。