Chrome Remote Desktop後にパスワード認証が頻繁に求められる問題の解決方法
問題の症状
Chrome Remote Desktop(CRD)を使用してDebian 12サーバーにリモートログインした後、以下のような場面で頻繁にパスワード認証を求められるようになることがあります。
- 外付けディスクのマウント時
- OSのサスペンド時
- その他のシステム管理操作時
原因の解説
Chrome Remote Desktopが作成する仮想セッション
CRDで接続すると、chrome-remote-desktop
という別セッションがsystemd-logindに登録されます。この結果、同じユーザーに対して複数のactiveセッションが並存することになります。
$ loginctl
SESSION UID USER SEAT TTY
c3 1000 you seat0
c1 1000 you chrome-remote-desktop
polkitの認証メカニズムとの衝突
polkitの既定ポリシーでは、mount(org.freedesktop.udisks2.*
)やsuspend(org.freedesktop.login1.suspend
)などの操作に対して、「現在activeでlocalなセッション」にはパスワード無しで権限を与えるように設定されています(<allow_active>yes</allow_active>
)。
しかし、複数のセッションが同時にactiveな状態では、polkitがどちらを「本物の作業席」として判定すべきか決められず、結果として認証を要求するようになります。
問題の確認方法
まず、現在の状況を確認してみましょう。
# セッション一覧の確認
$ loginctl
# polkitの動作ログを確認
$ journalctl -u polkit -f
loginctl
でchrome-remote-desktopセッションが残っているかどうかを確認してください。
解決策
1. 即座に問題を解決する(残留セッションの終了)
残っているCRDセッションを手動で終了します。
# 残っているCRDセッションIDがc1だった場合
$ sudo loginctl terminate-session c1
または
$ /opt/google/chrome-remote-desktop/chrome-remote-desktop --stop
2. 根本的な解決(自動起動の無効化)【推奨】
CRDを常時起動する必要がない場合は、ユーザーサービスを無効化することをお勧めします。
$ systemctl --user disable --now chrome-remote-desktop.service
この設定により、必要な時にのみchrome-remote-desktop --start
で起動すれば、余計なセッションが残ることはありません。
3. 常時使用する場合の対策
自動クリーンアップの設定
CRDを常時使用する必要がある場合は、利用後にセッションを自動で掃除する仕組みを作ることができます。
/etc/systemd/system/crd-cleanup.service
を作成し、ExecStopPost=
に残留セッションを終了するスクリプトを設定します。
[Unit]
Description=CRD Session Cleanup
After=chrome-remote-desktop.service
[Service]
Type=oneshot
ExecStopPost=/bin/bash -c 'loginctl terminate-session $(loginctl | awk "/chrome-remote-desktop/ {print $1}")'
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
代替手段の検討
他のリモートアクセス手段
- xrdp / VNC / WayVNCなどの別のリモート手段は「席」を乗っ取らないため、polkitとの衝突が起こりにくい特徴があります。
まとめ
Chrome Remote Desktopは「見えないXセッション」を残し、これがsystemd-logind / polkitの「active seat」判定を混乱させることが問題の根本原因です。
最も簡単で確実な解決策は、余分なセッションを終了し、CRDの自動起動を止めることです。常時使用する場合は、適切なクリーンアップ機構を導入することで問題を回避できます。
リモートデスクトップ環境を使用する際は、セッション管理とシステム権限の関係を理解し、適切な設定を行うことが重要です。
Discussion