神器Termux的使用日常

關(guān)鍵詞: Termux,  終端,  工具,  Android

寫(xiě)在前面:
現(xiàn)代桌面操作系統(tǒng)都自帶終端程序,其強(qiáng)大的功能性和圖形化的易用性相輔相成,使得系統(tǒng)操作更加高效。特別是Linux系列衍生系統(tǒng)的終端,得益于系統(tǒng)自帶的豐富的功能指令,熟悉之后更是如魚(yú)得水。隨著手持智能設(shè)備的普及和性能的不斷提升,如今的手持終端,如手機(jī)、平板等的硬件標(biāo)準(zhǔn)已達(dá)到了初級(jí)桌面計(jì)算機(jī)的硬件標(biāo)準(zhǔn),甚至有過(guò)之而無(wú)不及,如果能在這些設(shè)備上使用Linux下類(lèi)似的終端程序無(wú)疑是對(duì)運(yùn)維作業(yè)的一大補(bǔ)充。

Android作為現(xiàn)代智能設(shè)備操作系統(tǒng),在市場(chǎng)占有率上有壓倒性的優(yōu)勢(shì),況其與Linux系統(tǒng)有著不言自明的親緣關(guān)系,在Android上使用終端也算是返璞歸真了。另外,低門(mén)檻、低成本、受眾廣的實(shí)踐特性也是本文選擇Android的主要原因。

1. Termux 終端

Android是一個(gè)單用戶圖形化系統(tǒng),功能主要以應(yīng)用的形式呈現(xiàn)給用戶,因此在系統(tǒng)上我們無(wú)法直接獲取終端,更是無(wú)法直接調(diào)用系統(tǒng)自帶的豐富指令。使用ADB是一個(gè)曲線救國(guó)的方法,打開(kāi)USB調(diào)試后開(kāi)發(fā)者可以在桌面系統(tǒng)的終端中觸發(fā)Android系統(tǒng)自帶指令,使用方法大概如下:

adb shell env   # 查看Android的環(huán)境變量

這種方法需要一臺(tái)電腦的配合,為了實(shí)現(xiàn)全天候、無(wú)差別的終端體驗(yàn),你首先需要一個(gè)終端模擬器來(lái)保證隨時(shí)隨地地使用終端。Android平臺(tái)我們推薦Termux終端模擬器。

Termux is an Android terminal emulator and Linux environment app that works directly with no rooting or setup required. A minimal base system is installed automatically - additional packages are available using the APT package manager.
>>Homepage
>>Termux on Google Play

Termux

Termux終端有很多優(yōu)秀的特性,這里要說(shuō)兩點(diǎn):

  1. Termux有針對(duì)手機(jī)輸入優(yōu)化的鍵盤(pán)顯示,長(zhǎng)按KEYBOARD選項(xiàng)可打開(kāi)該功能
  2. Termux維護(hù)著適合Android的庫(kù),并自帶包管理器apt

因此,在Android上使用Termux終端和在Linux上使用終端一樣方便。
安裝完Termux后你有以下幾個(gè)步驟需要完成:

  1. 到手機(jī)設(shè)置中開(kāi)啟 Termux 的存儲(chǔ)權(quán)限,否則在Termux終端無(wú)法訪問(wèn)內(nèi)部存儲(chǔ)
  2. 修改Termux的源地址 (特別是國(guó)內(nèi)用戶

和Linux類(lèi)似,Termux有自己的軟件源,安裝Termux后默認(rèn)的軟件源是Termux官網(wǎng),即 http://termux.net,可打開(kāi)源列表查看。

### 如何查看
export EDITOR=vi
apt edit-sources 

源列表的一般格式為:

# The main termux repository
deb [arch=all,你的平臺(tái)架構(gòu)] http://termux.net stable main

上面的指令中我們指定 vi 作為默認(rèn)文本編輯器,vi指令是Termux自帶的,你也可以指定其他文本編輯器,但需要先安裝。默認(rèn)的源服務(wù)器在國(guó)內(nèi)是無(wú)法訪問(wèn)的,除非使用梯子,也就是說(shuō)剛開(kāi)始你可能只能使用vi編輯器,而且不能安裝任何軟件,畢竟 apt updage && apt upgrade都不能成功執(zhí)行,換言之沒(méi)有梯子默認(rèn)情況下你無(wú)法獲取資源列表。
國(guó)內(nèi)用戶建議使用清華維護(hù)的源服務(wù)器: http://mirrors.tuna.tsinghua.edu.cn/termux

## 國(guó)內(nèi)用戶建議使用的源列表內(nèi)容
# The main termux repository
# deb [arch=all,你的平臺(tái)架構(gòu)] http://termux.net stable main
deb [arch=all,你的平臺(tái)架構(gòu)] http://mirrors.tuna.tsinghua.edu.cn/termux stable main

默認(rèn)情況下內(nèi)容是使用http協(xié)議傳輸?shù)?,我們可以為apt添加安全傳輸支持,這樣就可以使用https安全傳輸協(xié)議。

apt install apt-transport-https

這時(shí)再次修改源服務(wù)器的傳輸協(xié)議為https并更新即可。
安裝Termux后我們不僅可以在手機(jī)上使用/system/bin下的命令,還能下載新的指令使用。

2. Termux之SSH

運(yùn)維從訪問(wèn)遠(yuǎn)程服務(wù)器開(kāi)始,這怎么離得開(kāi)ssh命令。Termux不自帶ssh命令,需先安裝才能使用。我們可以 apt install openssh 安裝openssh到終端。安裝的openssh包括客戶端ssh和服務(wù)端sshd,也就是說(shuō)我們既可以使用ssh訪問(wèn)遠(yuǎn)程設(shè)備,也可以在本機(jī)上開(kāi)啟ssh服務(wù)以方便其他設(shè)備遠(yuǎn)程訪問(wèn)本機(jī)。默認(rèn)情況下,安裝openssh不開(kāi)啟服務(wù)端,有需要的童鞋可自行開(kāi)啟。

Termux終端中使用ssh訪問(wèn)遠(yuǎn)程服務(wù)器與Linux終端中使用ssh別無(wú)二致。但要使用ssh訪問(wèn)Android設(shè)備就不同了,Termux終端中sshd服務(wù)不支持密碼驗(yàn)證,也就是說(shuō)用戶不能期望通過(guò)ssh user@server然后輸入用戶密碼的方式從別的終端訪問(wèn)Android設(shè)備。Termux終端中sshd只支持密鑰驗(yàn)證。

SSH驗(yàn)證的基本原理

SSH的英文全稱(chēng)為Secure Shell,是IETF(Internet Engineering Task Force)的Network Working Group所制定的一族協(xié)議,其目的是要在非安全網(wǎng)絡(luò)上提供安全的遠(yuǎn)程登錄和其他安全網(wǎng)絡(luò)服務(wù)。用于在主機(jī)之間建立起安全連接, 并加密傳輸內(nèi)容, 以達(dá)到安全的遠(yuǎn)程訪問(wèn), 操作以及數(shù)據(jù)傳輸?shù)哪康?

SSH協(xié)議目前有SSH1和SSH2兩個(gè)主流版本,SSH2協(xié)議兼容SSH1,強(qiáng)烈建議使用SSH2版本。目前實(shí)現(xiàn)SSH1和SSH2協(xié)議的主要軟件有OpenSSH 和SSH Communications Security Corporation 公司的SSH Communications 軟件。前者是OpenBSD組織開(kāi)發(fā)的一款免費(fèi)的SSH軟件,后者是商業(yè)軟件,因此在linux、FreeBSD、OpenBSD 、NetBSD等免費(fèi)類(lèi)UNIX系統(tǒng)種,通常都使用OpenSSH作為SSH協(xié)議的實(shí)現(xiàn)軟件。

SSH主要有兩個(gè)特點(diǎn): 1. 安全性 2. 傳輸速度快。與FTP、POP 和 Telnet 等傳統(tǒng)網(wǎng)絡(luò)服務(wù)使用明文傳輸數(shù)據(jù)、命令和口令不同,SSH可以對(duì)所有傳輸?shù)臄?shù)據(jù)進(jìn)行加密,能夠防止 DNS 欺騙和 IP 欺騙。

SSH支持兩種認(rèn)證方式:密碼認(rèn)證和密鑰認(rèn)證。兩種認(rèn)證方式的基本過(guò)程如下:
密碼認(rèn)證

  1. 客戶端向服務(wù)端發(fā)起登錄請(qǐng)求,服務(wù)端將自己的公鑰返回給客戶端
  2. 客戶端輸入登錄口令,口令經(jīng)服務(wù)端公鑰加密后發(fā)送到服務(wù)端
  3. 服務(wù)端接收到加密口令后使用私鑰解密,如果密碼正確則登錄成功

這里第一步(即服務(wù)端返回公鑰)就是我們?nèi)粘J褂胹sh過(guò)程中看到的類(lèi)似下面內(nèi)容的過(guò)程:

The authenticity of host 'host (12.18.429.21)' can't be established.
RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
Are you sure you want to continue connecting (yes/no)?

大概意思是說(shuō)欲鏈接的主機(jī)無(wú)法驗(yàn)證真實(shí)性,只知道其公鑰指紋,詢問(wèn)是否繼續(xù)建立連接。98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d就是主機(jī)的公鑰指紋,一個(gè)128位的01編碼。公鑰指紋是公鑰的摘要,要知道公鑰是一個(gè)長(zhǎng)度為1024及以上的01編碼,人為辨別公鑰難度極大,因此采用摘要算法得到公鑰的摘要,對(duì)比摘要要比對(duì)比公鑰容易得多。
密碼認(rèn)證本質(zhì)上是安全的,但如果有人假冒服務(wù)端就能騙取登錄口令,因此密碼認(rèn)證無(wú)法避免遭受中間人攻擊,何況每次登錄都要輸入口令,安全性就進(jìn)一步降低了。唯一能保證密碼認(rèn)證方式安全的途徑就是:遠(yuǎn)程主機(jī)必須在自己的網(wǎng)站上貼出公鑰指紋,以便用戶自行核對(duì)。

密鑰認(rèn)證:
密鑰認(rèn)證的方式要比密碼認(rèn)證的方式來(lái)得更加安全,用戶不僅不需要每次都輸入登錄口令,而且還可以選擇對(duì)密鑰進(jìn)行加密以防止因密鑰泄露而導(dǎo)致的安全隱患。密鑰認(rèn)證的一般過(guò)程如下:

  1. 客戶端發(fā)起密鑰連接請(qǐng)求,并上傳身份信息
  2. 服務(wù)端收到請(qǐng)求后,在可信列表中查詢客戶端,若無(wú)此客戶端則斷開(kāi)連接,否則發(fā)送一串隨機(jī)問(wèn)詢碼,該問(wèn)詢碼使用此客戶端公鑰加密處理
  3. 客戶端收到加密問(wèn)詢碼后,使用私鑰解密出問(wèn)詢碼再用通信session對(duì)問(wèn)詢碼加密并傳送給服務(wù)端
  4. 服務(wù)端解密問(wèn)詢碼并判定客戶端身份安全與否,安全則建立連接

因此,密鑰認(rèn)證首要要將客戶端的公鑰放置在服務(wù)端的授權(quán)登錄列表中。密鑰認(rèn)證一般不需要密碼,但客戶端可在生成密鑰時(shí)指定密鑰加密密碼,這樣在與服務(wù)端建立連接時(shí)需要輸入加密密碼來(lái)解密私鑰,防止因私鑰泄露帶來(lái)的安全問(wèn)題。

SSH通過(guò)Termux登錄Android設(shè)備

Openssh包含SSHD服務(wù),因此Android設(shè)備上,通過(guò)Termux安裝openssh后可以開(kāi)啟ssh服務(wù),ssh服務(wù)的配置文件默認(rèn)在$PREFIX/etc/ssh/sshd_config 中。值得注意的是Termux終端中sshd服務(wù)不支持密碼認(rèn)證,也就是說(shuō)用戶想要通過(guò)ssh連接上Android設(shè)備,只能通過(guò)密鑰認(rèn)證方式先將設(shè)備公鑰放置在Android設(shè)備的sshd服務(wù)的授權(quán)登錄列表中,然后通過(guò)私鑰校驗(yàn)的方式登錄。具體來(lái)說(shuō):

# 將設(shè)備公鑰添加都授權(quán)登錄列表中
cat id_rsa.pub >> $HOME/.ssh/authorized_keys
# 開(kāi)啟ssh服務(wù)
sshd

出于安全考慮,Android設(shè)備Termux終端中sshd服務(wù)默認(rèn)運(yùn)行在 8022端口,而不是常規(guī)22端口,用戶可以在 sshd_config 中指定sshd服務(wù)監(jiān)聽(tīng)的端口號(hào)。其他設(shè)備上可通過(guò) ssh username@ip -p port的方式登錄Android設(shè)備。

3. Termux之Aria2

Termux開(kāi)通了ssh服務(wù)后就可以通過(guò)ssh連接到Android設(shè)備的Termux終端進(jìn)行一系列操作,要知道使用傳統(tǒng)鍵盤(pán)敲命令行的體驗(yàn)可是Android鍵盤(pán)不能 比擬的,即使你安裝了黑客鍵盤(pán)。
下面介紹另一個(gè)非常有用的命令行工具 --- Aria2。Aria2是一個(gè)輕量級(jí)的命令行下載程序,類(lèi)似wget但支持更多的通信協(xié)議,功能更加強(qiáng)大。>>前往Aria2主頁(yè)
Termux資源庫(kù)中有aria2安裝包,我們可以像在Linux上一樣通過(guò)apt install aria2輕松在Android設(shè)備上安裝aria2,當(dāng)然這種方式安裝的aria2運(yùn)行在Termux終端環(huán)境下,不能獨(dú)立運(yùn)行。用戶可選擇從Google Play下載封裝了aria2的應(yīng)用程序來(lái)代替命令行安裝。此外用戶還可以下載aria2的Android編譯版放置在Termux環(huán)境中或系統(tǒng)環(huán)境中(應(yīng)該需要root 權(quán)限)來(lái)使設(shè)備支持aria2。>>前往Github下載預(yù)編譯版
Aria2的使用方法在上一篇文章 "使用Aria2完成下載任務(wù)" 中已經(jīng)進(jìn)行說(shuō)明,這里不再贅述。本節(jié)主要補(bǔ)充一個(gè)更適合Android上使用aria2的GUI界面,畢竟文章 "使用Aria2完成下載任務(wù)" 中介紹的兩個(gè)主流GUI界面都是基于WEB開(kāi)發(fā)的,在小屏的Android設(shè)備上使用起來(lái)還是有諸多不便。本節(jié)的主角是 Transdroid

什么是Transdroid

Transdroid 是國(guó)外某大神開(kāi)發(fā)的Torrent下載管理軟件(當(dāng)然是Android版),軟件以簡(jiǎn)潔友好據(jù)稱(chēng),主要幫助用戶在Android設(shè)備上管理PC或服務(wù)器上的下載任務(wù)。

當(dāng)前下載列表

當(dāng)前任務(wù)下載狀態(tài)

Transdroid只是一個(gè)下載管理器,不是一個(gè)下載器,真正負(fù)責(zé)下載任務(wù)的是你的PC或服務(wù)器上的uTorrent,Transmission, rTorrent, Vuze, Deluge, BitTorrent 6, qBittorrent等專(zhuān)用于下載的客戶端。使用Transdroid進(jìn)行下載任務(wù)管理只需兩步:

  1. 客戶端開(kāi)啟web管理API
  2. Transdroid 通過(guò)API獲取下載器的任務(wù)信息,并能夠在Transdroid上實(shí)現(xiàn)新增、暫停、刪除下載任務(wù)的基本操作

關(guān)于Transdroid的配置方法和其他具體信息可參考:

Transdroid官網(wǎng):https://www.transdroid.org/
Transdroid on Github: https://github.com/erickok/transdroid
自行搜索其他相關(guān)信息

使用Transdroid管理Aria2

Transdroid支持的下載器有很多,包括Aria2。按文章 "使用Aria2完成下載任務(wù)"的步驟配置并啟動(dòng)aria2命令后即可使用Transdroid連接aria2進(jìn)行管理,設(shè)置方法和使用WebUI大同小異。只需要注意配置Transdroid時(shí)使用正確的ip和端口即可。

如果aria2運(yùn)行在其他設(shè)備,如PC或服務(wù)器上(下文稱(chēng)“下載機(jī)”),需在Transdroid中正確填寫(xiě)PC或服務(wù)器的IP,并確保防火墻允許其他設(shè)備從aria2運(yùn)行的端口訪問(wèn)aria2下載機(jī)。局域網(wǎng)內(nèi),一般防火墻設(shè)置得當(dāng)則Android設(shè)備能無(wú)障礙訪問(wèn)下載機(jī)的下載任務(wù)信息。如果想隨時(shí)隨地通過(guò)Android設(shè)備管理下載機(jī)上的下載任務(wù),你還需要為你的局域網(wǎng)設(shè)置端口映射,參考 Setting up μTorrent -- Allow access from anywhere

在本節(jié)中主要是介紹在Android設(shè)備上使用Aria2進(jìn)行下載,并使用Transdroid進(jìn)行下載管理,因此Transdroid和Aria2運(yùn)行在一個(gè)設(shè)備上,不存在防火墻和端口映射的問(wèn)題,直接在Transdroid中設(shè)置好即可。Aria2+Transdroid完全能夠代替其他手機(jī)版下載軟件,并且表現(xiàn)完美。唯一的問(wèn)題是aria2依托于Termux終端環(huán)境,終端關(guān)閉,Aria2下載服務(wù)也就關(guān)閉了。因此,要在Android中使用Aria2獲得友好下載體驗(yàn),要同時(shí)打開(kāi)Termux終端運(yùn)行aria2服務(wù)和Transdroid下載管理程序。

關(guān)于結(jié)合Aria2和Transdroid的嘗試還可參見(jiàn):https://github.com/UKeyboard/aria2


會(huì)慢慢添加其他玩法,敬請(qǐng)期待。。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容