
Approva sudo su una workstation Linux con un'impronta digitale dal tuo telefono Android. Solo LAN; la chiave ECDSA non lascia mai il TEE del telefono e comunica con il protocollo ssh-agent verso pam_rssh.
Approva sudo sulla tua macchina Linux toccando il sensore di impronte digitali del tuo telefono Android.
Digita sudo, il telefono vibra, tocchi il sensore, il comando viene eseguito. Nessuna password digitata, nulla
nel cloud: il telefono risponde sulla tua LAN e l'impronta digitale è verificata dall'hardware sicuro
del telefono (TEE / StrongBox), non dal codice dell'app. Se qualcosa va storto (telefono spento, fuori portata, tocchi
Nega, passano 60 secondi) sudo ripiega semplicemente sulla tua normale richiesta della password. Può rendere
sudo più comodo; non può bloccarti fuori.
![]() 1. sudo sull'host Sul telefono compare chi sta chiedendo. Nega funziona direttamente da qui. |
![]() 2. Toccalo Un conto alla rovescia, l'host e l'ora, un avviso per host mai visti. Poi la richiesta di impronta digitale di sistema. |
![]() 3. Tocca il sensore Il TEE firma, sudo procede, l'app si chiude da sola. |
![]() Primo avvio Tre passaggi e un pulsante. Offre la registrazione dell'impronta digitale se il telefono non ne ha nessuna. |
![]() Configurazione Una checklist dal vivo: listener, notifiche, batteria, Non disturbare. "Pronto" solo quando tutti passano. |
![]() Negato o scaduto Nessuna firma lascia il telefono; l'host chiede la password. |
Screenshot da un emulatore Pixel 7 (da cui 10.0.2.2, l'host dell'emulatore). Il
pannello delle impronte digitali di sistema che appare sopra il passaggio 2 è una finestra sicura e non compare negli
screenshot.
sudo on the host
-> PAM: pam_rssh (third-party) dials the phone over the LAN, as an ssh-agent
-> phone: "Approve sudo? From 192.168.1.10" (notification)
-> tap -> BiometricPrompt -> fingerprint
-> the phone's TEE signs pam_rssh's fresh 32-byte challenge
-> pam_rssh verifies against the pinned public key -> sudo proceeds
pam_rssh,
un modulo esistente e mantenuto. Nulla di quanto scritto qui viene eseguito come root sull'host al
momento dell'autenticazione.setUserAuthenticationParameters(0, AUTH_BIOMETRIC_STRONG): una nuova biometria forte per
ogni firma, imposta all'interno del TEE (o StrongBox). Nemmeno il malware sul telefono può firmare
senza il tuo dito, e la chiave non può essere esportata.SECURITY.md contiene il modello di minaccia completo, incluso ciò contro cui non protegge. docs/DESIGN.md contiene il design e il ragionamento che vi sta dietro.
Telefono: Android 11+ (API 30, dove le chiavi biometriche per singolo utilizzo sono diventate esprimibili) con un sensore di impronte digitali di Classe 3 ("strong").
Host: una qualsiasi delle piattaforme seguenti. L'installer porta con sé
pam_rssh: un pacchetto dove esiste, altrimenti
compilato da un commit fissato e verificato.
| Piattaforma | Stato |
|---|---|
| Arch, Manjaro, EndeavourOS | ✅ testato end to end in CI |
| Debian 12 / 13, Ubuntu 24.04, Mint, Pop!_OS | ✅ testato end to end in CI |
| Fedora, RHEL / Rocky / Alma 9 | ✅ testato end to end in CI |
| openSUSE Tumbleweed | ✅ testato end to end in CI |
| Windows, tramite WSL (qualsiasi distribuzione sopra) | 🧪 dovrebbe funzionare, non testato; il discovery potrebbe non vedere il telefono attraverso il NAT di WSL2, quindi passa --phone |
macOS 14+ (tramite /etc/pam.d/sudo_local) | 🧪 sperimentale, non testato |
FreeBSD (porta security/pam_rssh) | 🧪 sperimentale, non testato |