OpenSSH使用

馬萬旻發表於2018-06-18

簡介

  • SSH
    SSH是一種網路協議,用於計算機之間的加密登入。(具體過程很簡單,點這裡?)
    • 中間人攻擊(Man-in-the-MiddleAttack,簡稱“MITM攻擊”),通過攔截正常的網路通訊資料,並進行資料篡改和嗅探,而通訊的雙方卻毫不知情。
    • 預防中間人攻擊的最有效方法就是驗證公鑰是不是來自伺服器,如果是公開的SSH伺服器,一般會將公鑰的雜湊值公佈在官網。
  • OpenSSH
    OpenSSH是提供SSH登入服務的軟體。

使用OpenSSH連線(登入)手機

  • $ ssh 使用者名稱@使用者伺服器地址
    • 最高許可權使用者:$ HOME:/var/root
    $ ssh root@使用者伺服器地址
    複製程式碼
    • mobile許可權使用者:$ HOME:/var/mobile
    $ ssh mobile@使用者伺服器地址
    複製程式碼
    當遠端主機的公鑰被接受以後,它會被儲存在$~/.ssh/known_hosts檔案中。當檔案中儲存的IP埠所對應的公鑰,和服務端的公鑰不匹配時,會出現中間人攻擊警告,需要刪除對飲的IP地址和埠記錄。

刪除伺服器獲取的公鑰

  • $ ssh-keygen -R 伺服器IP地址

修改OpenSSH登入密碼

  • 登入狀態下
$ passwd
複製程式碼

SSH公鑰登入

除了可以密碼登入,也可以免密登入
公鑰登入的原理

  • 客戶端將公鑰發給服務端
  • 服務端生成隨機字串給客戶端
  • 客戶端通過私鑰加密隨機字串給服務端
  • 服務端通過公鑰解密字串驗證通過

這種方法需要使用者自己提供公鑰,如果沒有公鑰,可以使用ssh-keygen生成,生成步驟如下:

$ ssh-keygen
使用ssh-keygen命令在$~/.ssh目錄下生成一對祕鑰:
id_rsa(私鑰)
id_rsa.pub(公鑰)

$ ssh-copy-id
使用ssh-copy-id命令將生成的公鑰上傳到服務端
複製程式碼

如果出現錯誤,仍需輸入密碼登入,使用以下命令列印debug資訊排查

$ ssh -vvv root@伺服器ip
複製程式碼

注意:要確保裝置中的$~/.ssh檔案和$~/.ssh/authorized_keys 檔案的組許可權和其他使用者許可權中沒有有寫(w)許可權。因為系統認為這是不安全的,會導致授權失敗。可通過如下命令糾正:

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
複製程式碼

通過USB登入

SSH協議的預設埠為22
將本地埠12345對映到服務端的TCP埠22,這樣就可以通過本地的12345埠建立連線了。

  • 使用python指令碼
1. 通過tcprelay.py將12345
$ python tcprelay.py -t 22:12345
2. 通過本機IP,12345埠,建立連線
$ ssh root@localhost -p 12345
複製程式碼

如果覺得輸入命令比較麻煩,可以使用shell指令碼

  • 使用libimobiledevice
1. 通過如下命令安裝libimobiledevice
$  brew install libimobiledevice
2. 使用libimobiledevice提供的工具iproxy把本地的2222埠對映到裝置的TCP埠22.
$ iproxy 2222 22
3. 通過本機IP,12345埠,建立連線
$ ssh root@localhost -p 2222
複製程式碼

如果覺得命令列比較麻煩,可以將埠轉換命令寫到開機啟動項中。

1. 建立檔案 ~/Library/LaunchAgents/com.usbmux.iproxy.plist
2. 寫入內容
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Label</key>
	<string>com.usbmux.iproxy</string>
	<key>ProgramArguments</key>
	<array>
    	<string>/usr/local/bin/iproxy</string>
    	<string>2222</string>
    	<string>22</string>
	</array>
	<key>RunAtLoad</key>
	<true/>
	<key>KeepAlive</key>
	<true/>
</dict>
</plist>
3. 執行命令
$ launchctl load ~/Library/LaunchAgents/com.usbmux.iproxy.plist
4. 開啟$ HOOM/.ssh/config檔案(沒有就建立),寫入以下內容
Host 5s		        #自定義的裝置名	
Hostname localhost	#通過USB的埠對映,寫入localhost
User root		    #以root使用者登入
Port 2222           #指定埠號為對映埠號2222
5. 輸入ssh 5s
複製程式碼

檔案拷貝

拷貝檔案123.txt

  • 通過Wi-Fi連線拷貝 IP地址:192.168.2.4
scp 123.txt root@192.168.2.4:~/
複製程式碼
  • 通過USB連線拷貝
注意大小寫。。。
scp -P 12345 123.txt root@localhost:~/
複製程式碼

相關文章