← ClaudeAtlas

infra-chrome-remote-desktoplisted

Use when installing, registering, or repairing a Chrome Remote Desktop host on Linux (a VM, an LXC container, or a workstation) - the web client answers "PIN is not valid" although the PIN is right, a session connects and drops straight away, the host shows offline, start-host dies with "Failed to set new config" or "Failed to start host", sudo refuses with "The \"no new privileges\" flag is set", or the host journal logs "pam_acct_mgmt() returned error 7" or "Local login check for <user> failed". Covers the per-connection PAM account check, /etc/shadow group ownership and unix_chkpwd, registering as the target user, single-use OAuth codes, the stored PIN hash, and the chrome-remote-desktop@<user> service.
bitranox/bitranox-skills · ★ 1 · AI & Automation · score 57
Install: claude install-skill bitranox/bitranox-skills
# Chrome Remote Desktop on Linux (infra-chrome-remote-desktop) Installing a Chrome Remote Desktop (CRD) host is the small half of this. The large half is that CRD reports several unrelated failures through one misleading message, so the repair path starts by finding out which failure you actually have. **The web client names the wrong subsystem.** CRD runs a PAM account check for the connecting user on every incoming connection, as the unprivileged desktop user. A rejected account check is rendered in the browser as "PIN is not valid". The PIN is not involved. ## Step 1 (always first): read the host journal during a connection attempt ```bash journalctl -u chrome-remote-desktop@<user> -f ``` Leave that running, have the user connect, and read what appears. This costs seconds and it is the only thing that distinguishes the causes below from each other. **Do not re-register the host, reset the PIN, delete the device entry, or spend an OAuth code before you have read this.** Those actions are the expensive wrong turn: a host that is already registered correctly will re-register correctly and fail in exactly the same way, and each attempt consumes a single-use code that only the end user can replace. An account-check failure looks like this: ``` pam_unix(chrome-remote-desktop:account): setuid failed: Operation not permitted pam_utils.cc:72 pam_acct_mgmt() returned error 7 pam_utils.cc:78 Local login check for <user> failed. jingle_session.cc:428 Session closed with err