LobiShell: SSH Access to Linux Servers from Android

LobiShell saved SSH connections screen

Sometimes I need to check a Linux server when I’m away from my laptop. For small jobs, an Android SSH client is enough. LobiShell, developed by Lobianco Home Lab, is one option worth looking at.

It runs SSH sessions from an Android phone and also supports Mosh, SCP file transfers, port forwarding and SSH key management. These are useful features when you manage more than one Linux machine.

Advantages: LobiShell supports putty based private key format.

Connecting to your servers

LobiShell lets you save server connections and manage identities. A typical SSH connection needs the server address, SSH port, username and a password or private key. Once connected, you can use the terminal for commands such as:

uptime
free -h
df -h
docker ps
systemctl status nginx

The saved connections screen makes it easier to move between several machines without re-entering their details.

LobiShell connection manager, showing saved hosts and identities.
LobiShell connection manager, showing saved hosts and identities.

Finding devices on your network

LobiShell includes a network scanner that can help find devices on a local network. This is handy when you have several servers, small PCs or other machines in a homelab. You should still verify the host’s SSH fingerprint before trusting a new connection.

LobiShell local network scan and discovered devices.
LobiShell local network scan and discovered devices.

SSH, Mosh and file transfers

Regular SSH works well on a stable connection. LobiShell also supports Mosh, which is designed to cope better with intermittent connections and network changes. Mosh requires server-side setup, so it is not a drop-in replacement on every host.

SCP support lets you upload or download files, while SSH port forwarding can provide access to an internal service through an encrypted connection. For example, that can be useful when a web interface is restricted to the server’s private network.

Authentication and saved commands

The Identity Store manages SSH keys and passwords. LobiShell also advertises FIDO2 authentication with compatible hardware security keys. It has command snippets, too, so commands you frequently run can be saved instead of typed each time.

For sensitive servers, I would still use key-based login, verify host keys, and avoid exposing SSH directly to the public internet when a VPN is available.

Terminal appearance and backups

There are settings for colours, fonts and interface layout. That matters more than it sounds on a small touchscreen, especially when you have to read logs or work in a terminal for a while.

LobiShell app colour and theme settings.
LobiShell app colour and theme settings.
LobiShell terminal appearance and interface options.
LobiShell terminal appearance and interface options.

For moving settings between devices, LobiShell supports WebDAV synchronization, including compatible services such as Nextcloud. It also supports local peer-to-peer synchronization and exportable backups, with optional AES-256-GCM encryption.

LobiShell as SSH Client

If you only open an SSH terminal once in a while, a simple client may be sufficient. LobiShell becomes more interesting if you manage several servers and want saved identities, snippets, file transfers and synchronization in the same app.

The limitations are mostly those of working on a phone. Long commands and detailed configuration work are still easier with a keyboard and larger screen. But for checking a service, reading logs or restarting a container, it is a practical tool to keep installed.

Download: LobiShell on Google Play.

App details and screenshots: Google Play listing by Lobianco Home Lab. Features may change with future releases.

Thoughts about Android Marshmallow 6.0 Permission model

I hope it is the rumored granular permission mode. But if it resembles anything in this SMH article, then it sounds like JavaME permission model all over again :p

Marshmallow also streamlines the “permissions” model for users to install and upgrade apps.
Users running certain apps will not need to grant any permissions when they install or upgrade, and the applications instead request permissions as it needs them.

Read more: http://www.smh.com.au/digital-life/digital-life-news/googles-android-60-will-be-known-as-marshmallow-20150817-gj1b2y.html

How to set Android *.apk mime-type for Nginx web server

Here’s a simple guide on how to add the correct mime-type for Android APK file for Nginx webserver.

sudo nano /etc/nginx/mime.types

In “mime.types” file, add this line within the “types” block


types {
     ...
     ...
     application/vnd.android.package-archive     apk;
     ...
     ...
}
     

Restart nginx server

sudo service nginx restart

Done!

Google Nexus 7 running on Ubuntu 13.04 Raring Ringtail

Here is the video showing Ubuntu 13.04 Raring Ringtail (still in development at this time of writing) running on Nexus 7, a 7.81″ tablet which runs Android Jelly Bean by default.

It is expected that more announcement will be made regarding Ubuntu tablet at the upcoming Ubuntu Developer Summit (UDS) in Denmark, which Mark Shuttleworth himself drop a hint that future Ubuntu development will focused on mobile platform. He even encouraged attendees to bring Nexus 7 to the summit.

My Thoughts
Its refreshing to see Ubuntu can be ported on tablets. It open up several opportunities to integrate Ubuntu operating system with mobile platform and together with the possibility of cloud computing, it will be able to unify the way people use their computers in their daily life. However, a new GUI has to be designed in order to make Ubuntu usable and convenient to be used on tablets.

All in all, it is a bold move from Canonical.

How to convert between sqlite2 and sqlite3 database

Here’s a short guide on how to convert between sqlite2 to sqlite3 database file:

sqlite2 /path/to/mysqlite2.db .dump > backupfile
sqlite3 /path/to/mynewsqlite3.db < backupfile

Using the same method, you can convert sqlite3 db to sqlite2 db too!

p/s: Why you need to convert? because embedded device (read: iPhone and Android) only supports sqlite3 database, while PHP 5 by default supports sqlite2 database.

Thus, this method provide a convenient way to convert between the two different version of sqlite db format.

Recommended Reading