三、SSH(Mac登錄到iPhone)


一、WIFI連接登錄:Mac(客戶(hù)端)登錄到iPhone(服務(wù)器)

為什么要Mac端要遠(yuǎn)程登錄到iPhone端?——這樣就可以在Mac的終端上,通過(guò)敲一些命令行來(lái)作用于iPhone端、操縱iPhone端。

為什么iOS支持終端命令操作?——因?yàn)閕OS和Mac OS X都是基于Darwin(蘋(píng)果的一個(gè)基于Unix的開(kāi)源系統(tǒng)內(nèi)核)。

登錄步驟:
1、iPhone端在cydia上安裝個(gè)OpenSSH,便于使用OpenSSH遠(yuǎn)程登錄。
2、Mac和iPhone處于同一WIFI下;
3、Mac端登錄命令ssh root@10.16.28.48,解釋?zhuān)篬ssh用該遠(yuǎn)程登錄保護(hù)方式] [root:賬戶(hù)名,iOS下的賬號(hào)之一] @ [10.16.28.48 是手機(jī)端服務(wù)器連接wifi的ip地址]
4、Mac端提示輸入密碼:alpine 【這是cydia上OpenSSH這個(gè)插件的作者規(guī)定的初始密碼】
5、成功登錄到iPhone服務(wù)器;
6、可以使用Mac端的終端操控iPhone了。。。。。。。。
7、退出登錄命令:exit

image.png

了解一些概念:

> iOS下的2個(gè)常用賬戶(hù):root、mobile
root:最高權(quán)限賬戶(hù),$HOME是/var/root
mobile:普通權(quán)限賬戶(hù),只能操作一些普通文件,不能操作系統(tǒng)級(jí)別的文件,$HOME是/var/mobile,登錄方式與root幾乎相同root mobile@服務(wù)器主機(jī)地址

> 修改賬戶(hù)密碼:
修改root賬戶(hù):passwd
修改mobile賬戶(hù):passwd mobile

image.png

> 搞清楚SSH、OpenSSH、SSL、OpenSSL

  • SSL:(一種加密)Secure Sockets Layer的縮寫(xiě),是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議,在傳輸層對(duì)網(wǎng)絡(luò)連接進(jìn)行加密;
  • OpenSSL:(一種加密,開(kāi)源不要錢(qián))SSL的開(kāi)源實(shí)現(xiàn),絕大部分HTTPS請(qǐng)求等價(jià)于:HTTP + OpenSSL;OpenSSH的加密就是通過(guò)OpenSSL完成的;
  • SSH:Secure Shell的縮寫(xiě),意為“安全外殼協(xié)議”,是一種可以為遠(yuǎn)程登錄提供安全保障的協(xié)議;使用SSH,可以把所有傳輸?shù)臄?shù)據(jù)進(jìn)行加密,“中間人”攻擊方式就不可能實(shí)現(xiàn),能防止DNS欺騙和IP欺騙;
  • OpenSSH:(不要錢(qián))是SSH協(xié)議的免費(fèi)開(kāi)源實(shí)現(xiàn),可以通過(guò)OpenSSH的方式讓Mac遠(yuǎn)程登錄到iPhone;
SSH
OpenSSH的加密就是通過(guò)OpenSSL完成的

> SSH的版本
SSH協(xié)議一共2個(gè)版本:SSH-1、SSH-2,現(xiàn)在用的比較多的是SSH-2,客戶(hù)端和服務(wù)端版本要保持一致才能通信。

查看SSH版本,通過(guò)查看配置文件中的Protocol字段,查看命令:
客戶(hù)端:cat /etc/ssh/ssh_config
服務(wù)端:cat /etc/ssh/sshd_config

> SSH的通信過(guò)程

可以分為3大主要階段:
1、建立安全連接、2、客戶(hù)端認(rèn)證、3、數(shù)據(jù)傳輸。

1、建立安全連接

1.1 在建立安全連接過(guò)程中,服務(wù)器會(huì)提供自己的身份證明;

左邊的客戶(hù)端中的known_hosts文件就是存放一些公鑰信息:

image.png

查看known_hosts:cat known_hosts,192.168.123.71對(duì)應(yīng)的就是iPhone服務(wù)端發(fā)過(guò)來(lái)的公鑰:

image.png

如何驗(yàn)證客戶(hù)端中known_hosts文件中192.168.123.71對(duì)應(yīng)的公鑰信息就是iPhone服務(wù)端的公鑰?
——打開(kāi)服務(wù)端的公鑰,對(duì)比下是否一致,即可知道。

連接到服務(wù)器 ssh root@192.168.123.71,來(lái)到服務(wù)器的配置文件夾cd /etc/ssh,查看其中服務(wù)器公鑰ssh_host_rsa_key.pub,對(duì)比上面客戶(hù)端(Mac)known_hosts文件中192.168.123.71對(duì)應(yīng)的內(nèi)容,會(huì)發(fā)現(xiàn)是一致的。

image.png

1.2 如果客戶(hù)端(Mac)并無(wú)服務(wù)器端(iPhone)的公鑰信息,就會(huì)詢(xún)問(wèn)是否連接此服務(wù)器,連接后下次就不會(huì)再詢(xún)問(wèn),因?yàn)橐呀?jīng)保存了iPhone端的公鑰,除非把公鑰刪掉;

提示要保存公鑰并連接

1.3 在建立安全連接過(guò)程中,如果服務(wù)端的公鑰和客戶(hù)端存儲(chǔ)的公鑰不一致,會(huì)提示以下錯(cuò)誤信息:提醒服務(wù)器的身份信息發(fā)生了變更(遠(yuǎn)程連接發(fā)生了改變,可能遭遇中間人攻擊)

也可能是這種原因:
公司換了臺(tái)電腦,上面的ip地址設(shè)置的一樣,這種情況并不是遭到攻擊。電腦還是會(huì)把根據(jù)公鑰生成的指紋信息發(fā)送過(guò)來(lái),如果確實(shí)是公司的那臺(tái)電腦的指紋信息,那還是要連接。

但是一旦顯示這個(gè)界面,是會(huì)連接失敗的,怎么辦?——?jiǎng)h掉之前的公鑰信息。

刪除公鑰方法一:用vim刪除對(duì)應(yīng)的host公鑰:vim ~/.ssh/known_hosts

1、cd ~/.ssh
2、vim know_hosts
3、讓光標(biāo)停留在192.168.123.71行,按 d 即可刪除
4、保存推出;
5、再次進(jìn)行連接服務(wù)器ssh root@192.168.123.71;
6、重新提示要不要連接

image.png

刪除公鑰方法二:ssh-keygen -R 服務(wù)器IP地址

image.png

建立安全連接,不只是公鑰信息的驗(yàn)證,還要做很多事,比如要確定會(huì)話(huà)密鑰。。。等等

2、客戶(hù)端認(rèn)證
第一步已經(jīng)確認(rèn)了要連接,但是客戶(hù)端的密碼還不知道對(duì)不對(duì)??蛻?hù)端是如何認(rèn)證呢?

SSH-2提供了2種常用的客戶(hù)端認(rèn)證方式

1、基于密碼的客戶(hù)端認(rèn)證:使用賬號(hào)和密碼即可認(rèn)證;
2、基于密鑰的客戶(hù)端認(rèn)證:免密碼認(rèn)證,最安全的一種認(rèn)證方式。

SSH-2默認(rèn)會(huì)優(yōu)先嘗試“密鑰認(rèn)證”,如果認(rèn)證失敗,才會(huì)嘗試“密碼認(rèn)證”。

如何搭建基于密鑰的客戶(hù)端認(rèn)證?
image.png
  1. 在客戶(hù)端要生成配對(duì)的公鑰文件和私鑰文件。
    【見(jiàn)圖:客戶(hù)端生成公私鑰操作步驟】
  2. 在服務(wù)器端會(huì)有個(gè)授權(quán)文件。
  3. 客戶(hù)端將公鑰內(nèi)容放到服務(wù)端的授權(quán)文件尾部。
    【見(jiàn)圖:公鑰內(nèi)容追加到服務(wù)端授權(quán)文件尾部】
  4. 登錄,驗(yàn)證免密碼認(rèn)證是否完成,由它自己完成,自己會(huì)用到私鑰。。。。
客戶(hù)端生成公私鑰操作步驟
命令行實(shí)際操作
生成的密鑰文件
公鑰內(nèi)容追加到服務(wù)端授權(quán)文件尾部
命令行實(shí)際操作
命令行實(shí)際操作

嘗試登錄,看是否免密碼:

image.png

還是需要密碼,免密驗(yàn)證失敗,ssh-keygen、ssh-copy-id root@服務(wù)器主機(jī)地址,這兩個(gè)智能指令生成密鑰文件并且追加到服務(wù)端授權(quán)文件尾部的操作,沒(méi)能幫到我,還沒(méi)搞清楚原因。(原因后面有說(shuō)到,是文件權(quán)限的問(wèn)題)

除開(kāi)用智能指令,還可以手動(dòng)操作來(lái)把公鑰內(nèi)容追加到授權(quán)文件尾部。
1、公鑰文件拷貝到服務(wù)端;
2、再把內(nèi)容追加到授權(quán)文件尾部;

操作步驟:
1、先刪掉服務(wù)端的授權(quán)文件authorized_keys;
2、進(jìn)入客戶(hù)端.ssh文件夾;
3、scp ~/.ssh/id_rsa.pub root@192.168.123.71:~/.ssh,scp:遠(yuǎn)程拷貝;
4、登錄到服務(wù)端進(jìn)入.ssh文件夾,把id_rsa.pub的內(nèi)容追加到authorized_keys的尾部:cat id_rsa.pub >> authorized_keys,如果沒(méi)有authorized_keys就會(huì)新建一個(gè),此時(shí)authorized_keys文件的內(nèi)容和id_rsa.pub就是一樣了;
5、rm id_rsa.pub;
6、嘗試登錄ssh root@192.168.123.71,看是否需要密碼,我的結(jié)果還需要密碼?。。。。。ê竺嬗姓f(shuō)到是文件夾權(quán)限問(wèn)題)

解決配置完免密認(rèn)證后,登錄還需要輸入密碼的問(wèn)題。

存在這個(gè)問(wèn)題是因?yàn)槲募A沒(méi)有權(quán)限。
所以在服務(wù)端,還需要配置權(quán)限:
chmod 755 ~
chmod 755 ~/.ssh
chmod 644 ~/.ssh/authorized_keys

image.png
命令行實(shí)操

結(jié)果還要密碼:alpine,只是提示輸密碼不一樣了。

Enter passphrase for key還是要密碼
方法一:上網(wǎng)查找的解決辦法:網(wǎng)址

Mac本地執(zhí)行命令:

eval `ssh-agent` 
ssh-add

ssh-agent:是用于管理密鑰;
ssh-add:用于將密鑰加入到ssh-agent中;
SSH可以和ssh-agent通信獲取密鑰,這樣就不需要用戶(hù)手工輸入密碼了。 但這個(gè)配置只對(duì)當(dāng)前會(huì)話(huà)生效,會(huì)話(huà)關(guān)閉或機(jī)器重啟后都需要重新執(zhí)行這兩條命令。將命令放到~/.bash_profile中,就可以免去每次輸入的麻煩。

成功解決Enter passphrase for key

到這里為止,可以成功的免密登錄了。但是退出終端,還是要輸入密碼。

方法二:
ssh-add -K ~/.ssh/id_rsa 

退出終端,依然不用輸入密碼,
但如果重啟電腦,上面的指令還需執(zhí)行一次。

方法三:(完美)

結(jié)合方法一和方法二,把ssh-add -K ~/.ssh/id_rsa這條指令放在~/.bash_profile中,這樣每次重啟電腦都會(huì)執(zhí)行該指令。已驗(yàn)證重啟終端或電腦都無(wú)需再輸入密碼。

參考:
1、mac配置完ssh依然提示"Enter passphrase for key"解決方法
2、mac:ssh登陸總是需要輸入鑰匙串密碼解決

> 22端口介紹
端口就是設(shè)備對(duì)外提供服務(wù)的窗口,每個(gè)端口都有個(gè)端口號(hào)(范圍是0~65535,共2^16個(gè))。

有些端口號(hào)是保留的,已經(jīng)規(guī)定了用途,比如:
21端口提供FTP服務(wù);
80端口提供HTTP服務(wù);
22端口提供SSH服務(wù)(可以查看/etc/ssh/sshd_config的Port字段);
更多保留端口號(hào): https://baike.baidu.com/item/%E7%AB%AF%E5%8F%A3%E5%8F%B7/10883658#4_3

iPhone默認(rèn)是使用22端口進(jìn)行SSH通信,采用的是TCP協(xié)議。

image.png

3、數(shù)據(jù)傳輸

二、USB連接登錄:Mac(客戶(hù)端)登錄到iPhone(服務(wù)器)

為什么要用USB連接?

  • 為了加快傳輸速度,也可以通過(guò)USB連接的方式進(jìn)行SSH登錄;

為什么Mac可以通過(guò)USB傳數(shù)據(jù)?

  • Mac上有個(gè)服務(wù)程序usbmuxd(它會(huì)開(kāi)機(jī)自動(dòng)啟動(dòng)),可以將Mac的數(shù)據(jù)通過(guò)USB傳輸?shù)絠Phone;
  • /System/Library/PrivateFrameworks/MobileDevice.framework/Resources/usbmuxd
USB連接

0、準(zhǔn)備兩個(gè)文件:tcprelay.py、usbmux.py
——即usbmuxd工具包(下載v1.0.8版本,主要用到里面的一個(gè)python腳本:tcprelay.py

1、映射端口,10010端口映射到22端口,命令行:python /Users/fengXXX/Desktop/usbmuxd/tcprelay.py -t 22:10010
格式解釋: python [文件路徑] [-t:為了能夠同時(shí)支持多個(gè)SSH連接] [SSH端口] : [客戶(hù)端Mac端口,找個(gè)沒(méi)被用的就行,如果被用了,則映射不成功,見(jiàn)圖:端口被占用.png]

image.png

端口被占用.png

已經(jīng)連成功的這個(gè)窗口留著,保留窗口映射狀態(tài),再新建個(gè)終端窗口。

2、登錄到本機(jī)root賬號(hào)下的10010端口:
ssh -p 10010 root@localhost
ssh root@127.0.0.1 -p 10010
localhost是一個(gè)域名,指向的IP地址是127.0.0.1,本機(jī)虛擬網(wǎng)卡的IP地址

登錄.png

登錄的時(shí)候我還沒(méi)做免密操作,所以還需要輸入密碼:alpine。

usbmuxd會(huì)將Mac本地10010端口的TCP協(xié)議數(shù)據(jù),通過(guò)USB連接轉(zhuǎn)發(fā)到iPhone的22端口

> 3、通過(guò)USB遠(yuǎn)程拷貝

  • 遠(yuǎn)程拷貝文件也可以直接跟Mac本地的10010端口通信
  • scp -P 10010 ~/Desktop/1.txt root@localhost:~/test(在Mac端操作)
  • 將Mac上的~/Desktop/1.txt文件,拷貝到iPhone上的~/test路徑
  • 注意:scp的端口號(hào)參數(shù)是大寫(xiě)的-P

注意:這里雖然是通過(guò)USB傳東西,這里的登錄還是SSH登錄,服務(wù)端認(rèn)證、客戶(hù)端認(rèn)證、安全傳輸,其實(shí)一直都在的。只是數(shù)據(jù)先發(fā)到10010端口,然后再發(fā)到22端口,有這么個(gè)轉(zhuǎn)發(fā)的過(guò)程而已,只是換了一種傳遞數(shù)據(jù)的方式而已。加密的過(guò)程如公鑰私鑰都還在的,之前的途徑是WIFI,現(xiàn)在是USB。

sh

如上,每次都要做兩步操作:
1、端口映射,
2、登錄到本機(jī)的10010端口

優(yōu)化:將經(jīng)常執(zhí)行的一系列終端命令行放到sh腳本文件中(shell)。

操作

用vim新建sh文件:
vim usb.sh 【這樣寫(xiě)是把usb.sh放在根目錄,文件中的是端口映射的內(nèi)容】

鍵入內(nèi)容:python 路徑 -t 22:mac端口

常用的命令行

esc鍵——>shift+:——>wq

在這個(gè)位置:


image.png

如何查看那一串命令:
cat usb.sh

如何執(zhí)行腳本呢?
有三種方式:sh、bash、source。


image.png

這些都是linux的知識(shí)了。

三種方式有什么區(qū)別呢?

  • sh、bash:shell環(huán)境會(huì)啟動(dòng)一個(gè)子進(jìn)程來(lái)執(zhí)行腳本,執(zhí)行完后,再回到父進(jìn)程的shell環(huán)境。
  • source:在當(dāng)前shell環(huán)境下執(zhí)行腳本;source也可以用.來(lái)表示。
image.png
image.png

下面再來(lái)新建第二個(gè)sh文件,登錄的sh文件:

vim login.sh

鍵入內(nèi)容ssh -p 10010 root@localhost

cat login.sh ,查看腳本內(nèi)容。
sh login.sh,執(zhí)行腳本內(nèi)容。

為什么兩個(gè)腳本不能弄成一個(gè)呢?


image.png

因?yàn)閳?zhí)行完端口映射后,就會(huì)一直卡在那里,不會(huì)執(zhí)行下一行命令了。按control+c終止連接之后,才執(zhí)行第二行登錄命令。


有個(gè)問(wèn)題,iPhone終端不能輸入中文


問(wèn)題演示

解決辦法:
1、iPhone終端沒(méi)有vim,先在cydia中下載安裝個(gè)Vi IMproved,方便在終端中使用vim新建文件。(注意,iPhone端本來(lái)是沒(méi)有vim的,因?yàn)樵姜z才能安裝上)

2、在iPhone端的~文件夾下vim新建.inputrc文件,并輸入
set convert-meta off
set output-meta on
set meta-flag on
set input-meta on
這些內(nèi)容,保存。

3、驗(yàn)證:在iPhone端vim新建一個(gè)中文名的txt:哈哈.txt,發(fā)現(xiàn)可以用中文名了。


image.png
在iPhone中新建的兩個(gè)文件.png

但是命令行工具上文件名是?亂符號(hào)這個(gè)還沒(méi)解決掉,可能是越獄的關(guān)系,本來(lái)iPhone上是沒(méi)vim的。但是iPhone上的文件名可以顯示中文。

?著作權(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)容