關(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終端有很多優(yōu)秀的特性,這里要說(shuō)兩點(diǎn):
- Termux有針對(duì)手機(jī)輸入優(yōu)化的鍵盤(pán)顯示,長(zhǎng)按KEYBOARD選項(xiàng)可打開(kāi)該功能
- Termux維護(hù)著適合Android的庫(kù),并自帶包管理器apt
因此,在Android上使用Termux終端和在Linux上使用終端一樣方便。
安裝完Termux后你有以下幾個(gè)步驟需要完成:
- 到手機(jī)設(shè)置中開(kāi)啟 Termux 的存儲(chǔ)權(quán)限,否則在Termux終端無(wú)法訪問(wèn)內(nèi)部存儲(chǔ)
- 修改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)證:
- 客戶端向服務(wù)端發(fā)起登錄請(qǐng)求,服務(wù)端將自己的公鑰返回給客戶端
- 客戶端輸入登錄口令,口令經(jīng)服務(wù)端公鑰加密后發(fā)送到服務(wù)端
- 服務(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ò)程如下:
- 客戶端發(fā)起密鑰連接請(qǐng)求,并上傳身份信息
- 服務(wù)端收到請(qǐng)求后,在可信列表中查詢客戶端,若無(wú)此客戶端則斷開(kāi)連接,否則發(fā)送一串隨機(jī)問(wèn)詢碼,該問(wèn)詢碼使用此客戶端公鑰加密處理
- 客戶端收到加密問(wèn)詢碼后,使用私鑰解密出問(wèn)詢碼再用通信session對(duì)問(wèn)詢碼加密并傳送給服務(wù)端
- 服務(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ù)。


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