聲明:本篇文章已授權(quán)微信公眾號 YYGeeker 獨家發(fā)布。
OpenSSH簡介
OpenSSH(OpenBSD Secure Shell)是 SSH 協(xié)議的免費開源實現(xiàn)。SSH協(xié)議簇可以用來進行遠程控制, 或在計算機之間傳送文件。
越獄設(shè)備安裝 OpenSSH
Cydia中添加雷鋒源,然后搜索OpenSSH,如圖,安裝即可

Mac電腦連接越獄設(shè)備
通過WIFI連接(需要越獄設(shè)備與電腦在同一局域網(wǎng))
查看手機的IP地址


$ssh root@172.25.237.223
密碼默認(rèn)為
alpine
通過USB連接(比WiFi更快更穩(wěn)定)
- 安裝usbmuxd
brew install usbmuxd
- 使用
iproxy命令將電腦的2222端口轉(zhuǎn)發(fā)到手機的22端口
$iproxy 2222 22
- 然后
command + t另起終端,執(zhí)行ssh命令
$ssh –p 2222 root@localhost
設(shè)置免密登錄
$ssh-keygen
$ssh-copy-id -p 2222 root@localhost
原理
1、客戶端生成RSA公鑰和私鑰
ssh-keygen調(diào)用后,~/.shh目錄中會生成私鑰id_rsa和公鑰id_rsa.pub
2、客戶端將自己的公鑰存放到服務(wù)器
ssh-copy-id -p 2222 root@localhost調(diào)用后,客戶端的公鑰id_rsa.pub會拷貝到服務(wù)器的~/.ssh/authorized_keys里面
3、客戶端請求連接服務(wù)器,服務(wù)器將一個隨機字符串發(fā)送給客戶端
4、客戶端根據(jù)自己的私鑰加密這個隨機字符串之后再發(fā)送給服務(wù)器
5、服務(wù)器接受到加密后的字符串之后用公鑰解密,如果正確就讓客戶端登錄,否則拒絕。這樣就不用使用密碼了。
填坑記
解決REMOTE HOST IDENTIFICATION HAS CHANGED!
場景如下
$ssh -p 2222 root@localhost
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:uOKypDzp0fdgHbfhzKN9Ci3uiOG54Pmoi4CKOINarfM.
Please contact your system administrator.
Add correct host key in /Users/CHF/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/CHF/.ssh/known_hosts:2
RSA host key for [localhost]:2222 has changed and you have requested strict checking.
Host key verification failed.
這里有一個關(guān)鍵詞man-in-the-middle attack,先來看看wiki的解釋:
中間人攻擊(英語:Man-in-the-middle attack,縮寫:MITM)是指攻擊者與通訊的兩端分別創(chuàng)建獨立的聯(lián)系,并交換其所收到的數(shù)據(jù),使通訊的兩端認(rèn)為他們正在通過一個私密的連接與對方直接對話,但事實上整個會話都被攻擊者完全控制。在中間人攻擊中,攻擊者可以攔截通訊雙方的通話并插入新的內(nèi)容。
使用ssh連接一個新host的時候,會有下面的詢問:
RSA key fingerprint is SHA256:uOKypDzp0fdgHbfhzKN9Ci3uiOG54Pmoi4CKOINarfM.
Are you sure you want to continue connecting (yes/no)?
輸入yes,ssh就會把這個host對應(yīng)的公鑰,保存在~/.ssh/known_hosts里面。
后面每一次的連接,都會校驗host對應(yīng)的公鑰,與~/.ssh/known_hosts里面的是否匹配,以阻止中間人攻擊。
連接越獄設(shè)備出現(xiàn)這種問題,是因為我們使用usb連接,host寫死為localhost,不同手機的公鑰當(dāng)然不一樣。
- 解決辦法
~/.ssh/known_hosts中刪除localhost對應(yīng)的記錄
[localhost]:2222 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD5UwQeAoQX
解決無法免密登錄的問題
使用 -v 打印debug信息
$ssh -v -p 2222 root@localhost
看到如下日志,Offering public key: RSA服務(wù)器沒有返回,所以定位為越獄機問題
debug1: Offering public key: RSA SHA256:SUmzZ/w6OjWX1H3i1hqWiXlDgUQjUN7YmomMa7fNquk /Users/CHF/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password,keyboard-interactive
查看越獄機日志
/etc/syslog.conf這個是syslog服務(wù)的主要配置文件,根據(jù)定義的規(guī)則導(dǎo)向日志信息。
$cat /etc/syslog.conf
*.* /var/log/syslog
$cat /var/log/syslog | grep sshd
發(fā)現(xiàn)如下日志
sshd[10024]: Authentication refused: bad ownership or modes for directory /private/var/root
google搜索Authentication refused: bad ownership or modes for directory
得知改一下權(quán)限就可以解決
chmod 755 /private/var/root
其他
編輯config文件
$vi ~/.ssh/config
添加下面的代碼
Host chenhuafengde5s
HostName localhost
User root
Port 2222
保存后,我們就可以使用ssh chenhuafengde5s來連接了
刪除SSH服務(wù)器對應(yīng)的公鑰
$ssh-keygen -R 服務(wù)器IP地址
修改ssh登錄密碼的命令
$passwd
然后輸入2次新密碼既可修改成功!