Come connettersi via SSH ad Ubuntu Phone

Ciao a tutti gli appassionati di Ubuntu Phone.

Oggi mi rivolgo soprattutto a coloro che amano smanettare sul proprio telefono senza troppe remore e agli sviluppatori che vogliono cimentarsi con la nuova interfaccia grafica di Canonical.

Abilitare la modalita sviluppatore

Abilitare la modalità sviluppatore su Ubuntu Phone è molto semplice.

Sul nostro device

  1. Trasciniamo il bordo sinistro, scegliamo l’icona delle impostazioni, scrolliamo verso la fine della scheda per trovare la voce ‘Info sul telefono‘ e facciamo tap su quest’ultima.
  2. Al fondo della schermata, dopo le varie utili informazioni sul sistema, troviamo una voce ‘Modalità sviluppatore‘; facciamo tap su questa voce.
  3. Se vogliamo attivare la modalità sviluppatore sul nostro Ubuntu Phone, saremo forzati a scegliere un sistema di sicurezza per sbloccare il dispositivo.
    Si può facilmente fare usando la voce ‘Sicurezza di blocco‘. Nel mio caso ho messo il pin numerico di 4 cifre più semplice possibile: 0000, anche se non è una grande idea in termini di sicurezza.
  4. Una volta impostato il blocco di sicurezza, potremo attivare la Modalità sviluppatore con un tap sulla voce relativa.

Connettere Ubuntu Phone ad ADB

Ubuntu

Su Ubuntu basterà aggiungere l’id del vendor del nostro dispositivo alle regole di udev.
Presumo sia molto simile su altre distro.
Si tratta di un comando:

adb kill-server
cp ~/.android/adb_usb.ini ~/.android/adb_usb.ini.backup
echo "0x2a47" > ~/.android/adb_usb.ini
adb-devices

Windows

Su Windows per far si che ADB riesca a interfacciarsi al nostro Ubuntu Phone dobbiamo innanzitutto installare i driver per far riconoscere il nostro device al ‘sistema operativo’ di Redmond.

Cerchiamo quindi i driver sul sito del produttore, per esempio per il mio Aquaris E4.5 la pagina di riferimento è questa: http://www.bq.com/it/prodotti/aquaris-e4-5.html
mentre il link diretto all’archivio dei driver è questo: https://s3-eu-west-1.amazonaws.com/bq-file-sharing/Drivers%26Tool.rar

  1. estrai la cartella, se non hai un programma che legge i file rar ti consiglio di installare 7zip
  2. esegui il file Drivers ADB\BQ_USB_Driver.exe
  3. connetti il tuo Ubuntu Phone via usb con il cavo fornito
  4. apri una console con win+r – cmd e spostati nella cartella in cui hai installato la sdk di Android con cd C:\Program Files\Android SDK\sdk\platform-tools
  5. avvia il server ADB con adb server-start

Verifica che il tuo Ubuntu Phone sia risconosciuto con adb devices, dovrebbe comparire con una label tipo JU001462

Abilitare SSH su Ubuntu Phone


Attualmente per connettersi via SSH al nostro Ubuntu Phone abbiamo bisogno di una chiave OpenSSH.

entriamo nella console via ADB ed avviamo il servizio ssh.
In caso ci venga richiesta la password, sappiate che quest’ultima è il codice pin di 4 numeri impostato in precedenza, nel mio caso 0000.

adb shell
sudo service ssh start

Ora per far si che il servizio SSH sia attivato automaticamente all’avvio, quindi anche in caso di riavvio del telefono, dobbiamo renderlo ‘persistente’

sudo setprop persist.service.ssh true

Per verificare, riavviamo il telefono e controlliamo lo status del servizio SSH.

sudo reboot
sudo service ssh status

In caso volessimo disabilitare il servizio SSH all’avvio ci basterà dare questo comando:

sudo setprop persist.service.ssh false

Ora che abbiamo il demone SSH in ascolto sul nostro Ubuntu Phone, possiamo passare all’upload della nostra chiave ssh.

Posto che abbiamo sul desktop un file chiamato id_rsa.pub che contenga la chiave pubblica che vogliamo usare, possiamo dare questi comandi:
(ricordiamoci di cambiare %USERPROFILE%\Desktop\id_rsa.pub con il percorso del file in cui hai salvato la tua chiave pubblica!)

adb shell mkdir /home/phablet/.ssh
adb push %USERPROFILE%\Desktop\id_rsa.pub /home/phablet/.ssh/authorized_keys
adb shell chown -R phablet.phablet /home/phablet/.ssh
adb shell chmod 700 /home/phablet/.ssh
adb shell chmod 600 /home/phablet/.ssh/authorized_keys

Per ottenere l’ip su cui connetterci possiamo usare questo comando:

adb shell
ifconfig | perl -nle'/dr:(\S+)/ && print $1'

Ora non ci resta che configurare il nostro client SSH preferito per connetterci all’ip trovato usando la nostra chiave privata.

Problemi comuni

Se non riusciamo a connetterci via ssh al nostro Ubuntu Phone al primo tentativo, sicuramente un buon punto di partenza per capire cosa non va è l’auth log.

Per visualizzarlo da adb possiamo usare:

adb shell tail -f /var/log/auth.log

Può capitare che manchino uno o più formati della chiave identificativa dell’host (cioè del telefono).

In auth.log avevo qualcosa del genere:

[...] error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
[...] error: Could not load host key: /etc/ssh/ssh_host_ecdsa_key

La soluzione più semplice in questo caso è ri-generare tutte le chiavi con:

adb shell ssh-keygen -A

La maggior parte dei client ssh alla prossima connessione noteranno questo cambiamento e ce lo segnaleranno come tentativo di intrusione o attacco ‘man in the middle’.

Ovviamente nel nostro caso non è vero; per risolvere di solito basta togliere la chiave del server dalla lista delle chiavi conosciute.

Su una comune distro basta rimuovere la linea corrispondente da ~/.ssh/known_hosts

Manca qualcosa? C’è un errore? Segnalacelo nei commenti qui sotto!