Secure Shell(安全外殼協(xié)議,簡(jiǎn)稱SSH)是一種加密的網(wǎng)絡(luò)傳輸協(xié)議缎玫,可在不安全的網(wǎng)絡(luò)中為網(wǎng)絡(luò)服務(wù)提供安全的傳輸環(huán)境硬纤。SSH 通過在網(wǎng)絡(luò)中創(chuàng)建安全隧道來實(shí)現(xiàn) SSH 客戶端與服務(wù)器之間的連接。雖然任何網(wǎng)絡(luò)服務(wù)都可以通過 SSH 實(shí)現(xiàn)安全傳輸赃磨,SSH 最常見的用途是遠(yuǎn)程登錄系統(tǒng)筝家。
SSH 以非對(duì)稱加密實(shí)現(xiàn)身份驗(yàn)證。身份驗(yàn)證有多種途徑邻辉,例如其中一種方法是使用自動(dòng)生成的公鑰-私鑰對(duì)來簡(jiǎn)單地加密網(wǎng)絡(luò)連接溪王,隨后使用密碼認(rèn)證進(jìn)行登錄;另一種方法是人工生成一對(duì)公鑰和私鑰值骇,通過生成的密鑰進(jìn)行認(rèn)證莹菱,這樣就可以在不輸入密碼的情況下登錄。任何人都可以自行生成密鑰吱瘩。公鑰需要放在待訪問的計(jì)算機(jī)之中道伟,而對(duì)應(yīng)的私鑰需要由用戶自行保管。認(rèn)證過程基于生成出來的私鑰使碾,但整個(gè)認(rèn)證過程中私鑰本身不會(huì)傳輸?shù)骄W(wǎng)絡(luò)中蜜徽。
越獄開發(fā)中我們常常會(huì)連接越獄手機(jī)進(jìn)行操作,這里有2種方式連接越獄手機(jī):Wifi 和 USB票摇。
首先越獄手機(jī)需要在 Cydia 安裝 OpenSSH拘鞋。
安裝完后我們?cè)賮砜?中方式如何進(jìn)行 SSH 登錄
一、Wifi 登錄
1矢门、保證 Mac 和 iPhone 在同一網(wǎng)段內(nèi)
2掐禁、查看手機(jī)的 IP 地址
3怜械、連接手機(jī)
打開命令行輸入 ssh root@手機(jī)IP地址
命令連接手機(jī),命令的意思是以 root 的用戶身份登錄手機(jī)傅事。
- root 用戶:系統(tǒng)中最高權(quán)限的用戶缕允,具有對(duì)系統(tǒng)完全操控全
- mobile 用戶:只能操作普通文件,不能操作系統(tǒng)文件
第一次連接會(huì)出現(xiàn)下圖中的提示蹭越,我們輸入 yes 繼續(xù),然后會(huì)要求我們輸入登錄密碼障本,默認(rèn)密碼 alpine。
連接成功后接收到的公鑰保存在 ~/.ssh/known_hosts
文件中,IP 和公鑰對(duì)應(yīng)的保存在文件中响鹃,如果登錄出現(xiàn)錯(cuò)誤說明保存的公鑰和登錄設(shè)備中的公鑰不匹配驾霜,這是需要將 known_hosts 中的對(duì)應(yīng)IP的公鑰刪除即可。
為防止別人通過默認(rèn)密碼訪問我們的手機(jī)买置,登錄成功后我們一般會(huì)通過 passwd
命令進(jìn)行修改密碼,輸入命令后連續(xù)輸入2次新密碼即可粪糙。
4.公鑰登錄(免密登錄)
每次登錄都要輸入密碼,有一種方式可以避免輸入密碼忿项,那就是公鑰登錄蓉冈。公鑰登陸需要一對(duì)非對(duì)稱加密的秘鑰,私鑰放在 MAC 上轩触,公鑰放在 iPhone 上寞酿,登錄時(shí) Mac 會(huì)向 iPhone 隨機(jī)發(fā)送一個(gè)字符串,登陸用戶用公鑰對(duì)字符串進(jìn)行加密并將結(jié)果發(fā)送給 Mac脱柱,Mac 使用私鑰對(duì)其進(jìn)行解密伐弹,如果解密成功證明用戶可信,確認(rèn)可信后就建立了連接榨为。
- 進(jìn)入到 ~/.ssh 文件夾下
- 通過
ssh-keygen
命令生成一對(duì)公鑰和私鑰惨好,一直回車即可,結(jié)束后 ~/.ssh 文件夾下回生成 id_rsa 和 id_rsa.pub 兩個(gè)文件随闺,前者是私鑰昧狮,后者是公鑰
- 將公鑰上傳到遠(yuǎn)程設(shè)備中,打開命令行工具輸入
ssh-copy-id root@手機(jī)IP
命令板壮,這一步是將本地公鑰上傳到遠(yuǎn)程設(shè)備 ~/.ssh/authorized_keys 文件中?逗鸣。
至此我們已經(jīng)將公鑰和私鑰配置好,再次連接手機(jī)就不會(huì)要求輸入密碼了,如果登錄時(shí)仍需要輸入密碼绰精,可以使用如下命令打印debug信息來排查原因
ssh -vvv root@172.16.121.12
注:確保設(shè)備中 ~/.ssh
和 ~/.ssh/authorized_keys
文件的組權(quán)限和其他用戶權(quán)限沒有寫權(quán)限撒璧,應(yīng)為系統(tǒng)認(rèn)為這是不安全的,會(huì)導(dǎo)致授權(quán)失敗笨使,可以使用如下命令進(jìn)行糾正
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys?
二卿樱、USB 登錄
使用 Wifi 方式連接,需要依賴網(wǎng)絡(luò)環(huán)境,而且傳輸文件時(shí)速度比較慢硫椰,而 USB 方式登錄則避免了這2個(gè)問題繁调。
1.映射端口
SSH 服務(wù)器是默認(rèn)運(yùn)行在 22 號(hào)端口上的萨蚕,我們需要制定一個(gè)本地端口映射到設(shè)備的TCP端口 22。
我們使用 libimobiledevice 工具進(jìn)行映射,使用 brew install libimobiledevice
命令進(jìn)行安裝蹄胰,安裝完成后再使用 iproxy 2222 22
將本地 2222 端口號(hào)映射到網(wǎng)絡(luò)端口 22岳遥,出現(xiàn) waiting for connection? 代表映射成功,另開窗口進(jìn)行連接,連接命令如下:
ssh -p 2222 root@localhost
或
ssh -p 2222 root@127.0.0.1
三裕寨、配置 SSH
正常的連接命令包括端口號(hào)浩蓉、用戶名和 IP 地址,我們感覺比較麻煩宾袜,這時(shí)我們可以配置 SSH,我們使用一個(gè)別名就能進(jìn)行連接捻艳。
- 找到 SSH 配置文件,
~/.ssh/config
文件,如果沒有則創(chuàng)建 - 配置格式庆猫,需要在配置文件中寫入如下格式:
Host -------------- 自定義設(shè)備名
Hostname -------- 通過USB端口映射认轨,本地IP或localhost
User ------------- 登錄用戶
Port??? ------------- 指定端口號(hào)為映射端口號(hào)
下面分別 Wifi 和 USB 方式的連接配置:
// Wifi 方式配置
Host wifi
Hostname 192.168.1.111
User root
Port 22
// USB 方式配置
Host usb
Hostname localhost
User root
Port 2222
使用方式如下:
// Wifi 使用方式
ssh wifi
// USB 使用方式
iproxy 2222 22
ssh usb
配置好后聯(lián)合免密登錄使用非常方便。